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

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

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