STL堆排序其實就是創(chuàng)建一個二叉樹,下面是幾個常用函數(shù)的使用方法和代表的意思
#include
#include
#include
#include
using namespace std;
(1)創(chuàng)建一個數(shù)組,并添加數(shù)據(jù)
vector v_Arry;
v_Arry.push_back(5);
v_Arry.push_back(6);
v_Arry.push_back(4);
v_Arry.push_back(8);
v_Arry.push_back(2);
v_Arry.push_back(3);
v_Arry.push_back(7);
v_Arry.push_back(1);
v_Arry.push_back(9);
v_Arry.push_back(10);
v_Arry.push_back(55);
(2)make_heap(v_Arry.begin(), v_Arry.end(), less()) //建堆(其實就是建二叉樹),根節(jié)點是最大值,其每一個節(jié)點都小于或等于其父節(jié)點;使用greater()則相反,根節(jié)點是最小值,其每一個節(jié)點都大于或等于其父節(jié)點
(3)此時可以輸出查看一下建好的堆是不是一個標(biāo)準(zhǔn)的二叉樹
我的輸出結(jié)果是:55,10,7,9,6,3,4,1,8,5,2
變成二叉樹就是如下:

<!--[if !vml]--><!--[endif]-->
<!--[if !vml]--><!--[endif]-->
結(jié)果不是唯一單一定要滿足父節(jié)點和子節(jié)點的大小關(guān)系。
(4)pop_heap(v_Arry.begin(), v_Arry.end());//把根節(jié)點移到末尾,并沒有刪除
v_Arry.pop_back();//刪除該節(jié)點
此時輸出結(jié)果:10,9,7,8,6,3,4,1,2,5
二叉樹如下: (5)v_Arry.push_back(55); //只是添加數(shù)據(jù)放到子節(jié)點
push_heap(v_Arry.begin(), v_Arry.end());//往二叉樹中插入數(shù)據(jù),滿足子節(jié)點小于等于父節(jié)點
此時輸出結(jié)果:55,10,7,8,9,3,4,1,2,5,6
二叉樹如下:
(6)sort_heap(v_Arry.begin(), v_Arry.end());//對二叉樹所有節(jié)點進(jìn)行排序
此時輸出結(jié)果:1,2,3,4,5,6,7,8,9,10,55
(7)find ( v_Arry.begin(), v_Arry.end(), value );// 從begin到end查找value,若找不到,返回end
原文地址:http://blog.zol.com.cn/1356/article_1355249.html
#include
#include
#include
#include
using namespace std;
(1)創(chuàng)建一個數(shù)組,
vector
v_Arry.pus
v_Arry.pus
v_Arry.pus
v_Arry.pus
v_Arry.pus
v_Arry.pus
v_Arry.pus
v_Arry.pus
v_Arry.pus
v_Arry.pus
v_Arry.pus
(2)make_he
(3)此時可以輸出查
我的輸出結(jié)果是:55
變成二叉樹就是如下:


(4)pop_hea
v_Arry.pop
此時輸出結(jié)果:10,
二叉樹如下: (5)v_Arry.
push_heap(
此時輸出結(jié)果:55,
二叉樹如下:
(6)sort_he
此時輸出結(jié)果:1,2
(7)find ( v_Arry.beg
原文地址:http://blog.zol.com.cn/1356/article_1355249.html