日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

基于PHP實現堆排序原理及實例詳解

瀏覽:239日期:2022-09-09 18:13:46

堆(heap)是計算機科學中一類特殊的數據結構的統稱,通常是一個可以被看做一棵樹的數組對象。

堆{k1,k2,ki,…,kn} (ki <= k2i,ki <= k2i+1)|(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4...n/2)

關于堆:

堆中某個節點的值總是不大于或不小于其父節點的值; 堆總是一棵完全二叉樹(下面)。 將根節點最大的堆叫做最大堆或大根堆,根節點最小的堆叫做最小堆或小根堆。

完全二叉樹

說到堆排序,就不能不提完全二叉樹,這些基本概念在網上到處都是,我摘了個最簡單的。。

完全二叉樹:除最后一層外,每一層上的節點數均達到最大值;在最后一層上只缺少右邊的若干結點。

我自己總結認為,正是因為有下面兩個特點,

只允許最后一層有空缺結點且空缺在右邊,即葉子結點只能在層次最大的兩層上出現(存儲方式的規則性); 若i>1,tree的雙親為tree[i div 2](其父子結點值的規律性);

才使得其進行排序非常方便。

堆排序

堆排序求升序用大頂堆,求降序用小頂堆。

本例用求降序的小頂堆來解析。

堆排序步驟如下:

1、我們將數據(49、38、65、97、76、13、27、50)建立一個數組$arr;

2、用數組$arr建立一個小頂堆(主要步驟,會在代碼注釋里解釋,下圖是用一個數組建立小頂堆的過程);

3、將堆的根(最小的元素)與最后一個葉子交換,并將堆長度減一,跳到第二步;

4、重復2-3步,直到堆中只有一個結點,排序完成。

基于PHP實現堆排序原理及實例詳解

堆排序的PHP實現

//因為是數組,下標從0開始,所以,下標為n根結點的左子結點為2n+1,右子結點為2n+2; //初始化值,建立初始堆$arr=array(49,38,65,97,76,13,27,50);$arrSize=count($arr);//將第一次排序抽出來,因為最后一次排序不需要再交換值了。buildHeap($arr,$arrSize);for($i=$arrSize-1;$i>0;$i--){ swap($arr,$i,0); $arrSize--; buildHeap($arr,$arrSize); }//用數組建立最小堆function buildHeap(&$arr,$arrSize){ //計算出最開始的下標$index,如圖,為數字'97'所在位置,比較每一個子樹的父結點和子結點,將最小值存入父結點中 //從$index處對一個樹進行循環比較,形成最小堆 for($index=intval($arrSize/2)-1; $index>=0; $index--){ //如果有左節點,將其下標存進最小值$min if($index*2+1<$arrSize){ $min=$index*2+1; //如果有右子結點,比較左右結點的大小,如果右子結點更小,將其結點的下標記錄進最小值$min if($index*2+2<$arrSize){if($arr[$index*2+2]<$arr[$min]){ $min=$index*2+2;} } //將子結點中較小的和父結點比較,若子結點較小,與父結點交換位置,同時更新較小 if($arr[$min]<$arr[$index]){swap($arr,$min,$index); } } }}//此函數用來交換下數組$arr中下標為$one和$another的數據function swap(&$arr,$one,$another){ $tmp=$arr[$one]; $arr[$one]=$arr[$another]; $arr[$another]=$tmp;}

下面是排序的最終結果:

基于PHP實現堆排序原理及實例詳解

堆用來進行全排序,時間復雜度是O(nlogn)

而快排用來全排序,平均時間復雜度也是O(nlogn)

但堆排序可以用來求 TopK 時,堆的時間復雜度為O(Klog2(n),因為它只需要進行 K 輪排序即可。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品一级| 美女精品视频在线| 色在线视频观看| 精品理论电影在线| 国产精品久久久久久av公交车 | 久久精品国产亚洲aⅴ| 国产精品视频首页| 你懂的国产精品永久在线| 国产精品白丝av嫩草影院| 国产精品亚洲综合色区韩国| 国产精品亲子伦av一区二区三区| 久久国产欧美日韩精品| 欧美日韩一区二区国产| 欧美一区二区三区久久精品| 欧美片第1页综合| 国产精品一国产精品k频道56| 国产九九精品| 精品精品国产三级a∨在线| 色乱码一区二区三区网站| 精品日韩一区| 久久蜜桃精品| 亚洲综合三区| 欧美亚洲综合视频| 欧美1区二区| 午夜精品久久久久久久久久蜜桃| 一区二区三区视频免费观看| 夜夜嗨一区二区| 日韩有吗在线观看| 国产精品分类| 国产va在线视频| 国产一区久久| 亚洲开心激情| 国产精品大片免费观看| 欧美成人a交片免费看| 久久久久国产精品一区二区| 日韩亚洲精品在线| 青草国产精品久久久久久| 成人日韩av| 99亚洲精品| 国产精品网址| 亚洲91视频| 伊人久久大香伊蕉在人线观看热v| 日韩av网站在线观看| 四虎国产精品免费观看| 好吊日精品视频| 欧美久久亚洲| 久久久久久黄| 欧美伊人久久| 精品国模一区二区三区| 亚洲一区日本| 欧美激情视频一区二区三区免费 | 精品免费av| 在线成人动漫av| 日韩avvvv在线播放| 国产在线观看www| 天堂va蜜桃一区二区三区| 美女视频黄免费的久久| 99久精品视频在线观看视频| 综合一区二区三区| 国产伦久视频在线观看| 亚洲欧美网站在线观看| 国产精选在线| 日韩高清中文字幕一区| 日韩欧美一区二区三区在线视频 | 国产精品久久久久av电视剧| 蜜桃视频在线观看一区二区| 国产精品一国产精品k频道56| 国产综合精品| 国产精品17p| 亚洲欧美日韩国产一区二区| 日韩av有码| 日韩1区2区3区| 日韩成人亚洲| 91精品在线免费视频| 欧美/亚洲一区| 精品一区二区三区四区五区| 国产精品婷婷| 桃色一区二区| 国产精品视频一区二区三区四蜜臂 | 欧美日韩视频| 卡一卡二国产精品| 视频一区国产视频| 日本美女一区| 欧美国产亚洲精品| 丝袜美腿亚洲一区二区图片| 国产成人1区| 日本不卡高清| 日韩午夜精品| 美女一区网站| 免费观看亚洲天堂| 亚洲精品麻豆| 久久久成人网| 精品国产欧美日韩| 欧美精品国产| 亚洲综合五月| 欧美日韩一区二区三区视频播放| 麻豆精品国产91久久久久久| 香蕉久久一区| 日韩一级精品| 亚洲国产综合在线看不卡| 国产一区2区| 久久99久久人婷婷精品综合| 青青草91视频| 中文精品电影| 99国产精品99久久久久久粉嫩| 国产 日韩 欧美一区| 精品国产91| 国产精品视频首页| 日韩精品欧美大片| 人人爽香蕉精品| 亚洲免费高清| 日韩视频不卡| 99热精品在线| 日韩亚洲精品在线| 欧美日韩高清| 午夜日韩福利| 午夜精品影院| 国产精品毛片| 中文一区二区| 久久高清国产| 樱桃成人精品视频在线播放| 在线一区免费| 国产一在线精品一区在线观看| 久久激情一区| 亚洲国产专区校园欧美| 91精品在线观看国产| 视频福利一区| 久久伦理在线| 亚洲精品电影| 亚洲在线电影| 亚洲精选av| 日本伊人久久| 日韩一区二区三免费高清在线观看 | 成人在线网站| 亚洲成人av观看| 欧美+亚洲+精品+三区| 精品一区在线| 亚洲免费播放| 日韩一区精品字幕| 在线看片日韩| 色8久久久久| 日本午夜精品| 免费在线成人| 国产自产自拍视频在线观看| 精品亚洲美女网站| 五月天久久777| 国产毛片一区| 天堂va欧美ⅴa亚洲va一国产| 911亚洲精品| 卡一卡二国产精品| 久久91导航| 人人精品人人爱| 国产日本亚洲| 成人小电影网站| 一区二区亚洲精品| 日韩视频1区| 精品国产乱码久久久久久樱花 | 亚洲制服欧美另类| 日韩激情网站| 国产精成人品2018| 天堂√8在线中文| 亚洲欧美高清| 国产精品亚洲二区| 神马午夜久久| 中文字幕日本一区| 欧美成a人片免费观看久久五月天| av免费不卡国产观看| 99视频一区| 国产黄色一区| 999精品在线| 亚洲精品观看| 国产suv精品一区二区四区视频| 欧美丝袜一区| 日韩精品第二页| 久久久久久久欧美精品| 国产模特精品视频久久久久| 91成人福利| 日韩国产激情| 亚洲精品伊人| 精品美女视频| 鲁大师影院一区二区三区| 国产精品a级| 亚洲精品一区二区妖精| 日韩动漫一区| 欧美成人基地| 日韩福利视频网| 亚洲成人不卡| 欧美精品中文字幕亚洲专区| 成人精品中文字幕| 亚洲青青久久| 国产66精品| 蜜芽一区二区三区| 成人国产综合| 日韩av网站在线观看| 精品捆绑调教一区二区三区| 亚洲男人在线| 久久久久久久久丰满| 日韩av不卡一区二区| 久久视频精品| 精品国产亚洲一区二区三区大结局|