|
常用鏈接
留言簿(4)
隨筆分類
隨筆檔案
搜索
最新評論

閱讀排行榜
評論排行榜
Powered by: 博客園
模板提供:滬江博客
|
|
|
|
|
發新文章 |
|
|
STL堆排序其實就是 創建一個二叉樹,下面是幾個常用函數的使用方法和代表的意思 #include #include #include #include using namespace std;
(1)創建一個數組,并添加數據 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()) //建堆(其實就是建二叉樹),根節點是最大值,其每一個節點都小于或等于其父節點;使用greater()則相反,根節點是最小值,其每一個節點都大于或等于其父節點
(3)此時可以輸出查看一下建好的堆是不是一個標準的二叉樹 我的輸出結果是:55,10,7,9,6,3,4,1,8,5,2 變成二叉樹就是如下:

<!--[if !vml]--><!--[endif]-->
<!--[if !vml]--><!--[endif]-->
結果不是唯一單一定要滿足父節點和子節點的大小關系。 (4)pop_heap(v_Arry.begin(), v_Arry.end());//把根節點移到末尾,并沒有刪除 v_Arry.pop_back();//刪除該節點 此時輸出結果:10,9,7,8,6,3,4,1,2,5 二叉樹如下:
(5)v_Arry.push_back(55); //只是添加數據放到子節點 push_heap(v_Arry.begin(), v_Arry.end());//往二叉樹中插入數據,滿足子節點小于等于父節點 此時輸出結果:55,10,7,8,9,3,4,1,2,5,6 二叉樹如下:
(6)sort_heap(v_Arry.begin(), v_Arry.end());//對二叉樹所有節點進行排序 此時輸出結果: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
|
|