下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、php堆排序?qū)崿F(xiàn)原理與應(yīng)用方法_ 這篇文章主要介紹了php堆排序?qū)崿F(xiàn)原理與應(yīng)用方法,較為具體的分析了堆排序的原理及用法技巧,具有肯定參考借鑒價(jià)值,需要的伴侶可以參考下 本文實(shí)例講解并描述了php堆排序?qū)崿F(xiàn)原理與應(yīng)用方法。分享給大家供大家參考。具體分析如下: 這里以php作為描述語(yǔ)言較具體講解堆排序原理,因保證程序可讀性,故不做優(yōu)化,php程序中關(guān)于堆的一些概念如下: 假設(shè)n為當(dāng)前數(shù)組的key則,n的父節(jié)點(diǎn)為 n1 或者 n/2(整除);n的左子節(jié)點(diǎn)l= n1 或 l=n*2,n的右子節(jié)點(diǎn)r=(n1)+1 或 r=l+1 $arr=array(1,8,7,2,3,4,6,5,9); 數(shù)組$arr
2、的原形態(tài)結(jié)構(gòu)如下: 1 / 8 7 / / 2 3 4 6 / 5 9 heapsort($arr);print_r($arr); 排序后生成標(biāo)準(zhǔn)的小頂堆結(jié)構(gòu)如下: 1 / 2 3 / / 4 5 6 7 / 8 9 既數(shù)組:array(1,2,3,4,5,6,7,8,9): 代碼如下: function heapsort($arr) /求最終一個(gè)元素位 $last=count($arr); /堆排序中通常忽視$arr0 array_unshift($arr,0); /最終一個(gè)非葉子節(jié)點(diǎn) $i=$last1; /整理成大頂堆,最大的數(shù)整到堆頂,并將最大數(shù)和堆尾交換,并在之后的計(jì)算中忽視數(shù)組后端
3、的最大數(shù)(last),直到堆頂(last=堆頂) while(true) adjustnode($i,$last,$arr); if($i1) /移動(dòng)節(jié)點(diǎn)指針,遍歷全部非葉子節(jié)點(diǎn) $i-; else /臨界點(diǎn)last=1,既全部排序完成 if($last=1)break; /當(dāng)i為1時(shí)表示每一次的堆整理都將得到最大數(shù)(堆頂,$arr1),重復(fù)在根節(jié)點(diǎn)調(diào)整堆 swap($arr$last,$arr1); /在數(shù)組尾部按大小挨次保留最大數(shù),定義臨界點(diǎn)last,以免整理堆時(shí)重新打亂數(shù)組后面已排序好的元素 $last-; /彈出第一個(gè)數(shù)組元素 array_shift($arr); /整理當(dāng)前樹節(jié)點(diǎn)($
4、n),臨界點(diǎn)$last之后為已排序好的元素 function adjustnode($n,$last,$arr) $l=$n1; /$n的左孩子位 if(!isset($arr$l)|$l$last) return ; $r=$l+1; /$n的右孩子位 /假如右孩子比左孩子大,則讓父節(jié)點(diǎn)的右孩子比 if($r=$last$arr$r$arr$l) $l=$r; /假如其中子節(jié)點(diǎn)$l比父節(jié)點(diǎn)$n大,則與父節(jié)點(diǎn)$n交換 if($arr$l$arr$n) /子節(jié)點(diǎn)($l)的值與父節(jié)點(diǎn)($n)的值交換 swap($arr$l,$arr$n); /交換后父節(jié)點(diǎn)($n)的值($arr$n)可能還小于原子節(jié)點(diǎn)($l)的子節(jié)點(diǎn)的值,所以還需對(duì)原子節(jié)點(diǎn)($l)的子節(jié)點(diǎn)進(jìn)行調(diào)整,用遞歸實(shí)現(xiàn) adjustnode($l,$last,$arr); /交換兩個(gè)值 function swap($a,$b)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:聚焦體育新課標(biāo)小學(xué)體育課運(yùn)動(dòng)負(fù)荷主觀測(cè)評(píng)路徑與調(diào)控策略研究
- 課題申報(bào)參考:教師教學(xué)洞察力的表現(xiàn)特征、生成機(jī)制及發(fā)展路徑研究
- 包含維修條款的2025年度二手手機(jī)買賣合同范本3篇
- 二零二五版桉樹種植與星海生態(tài)教育合作項(xiàng)目合同3篇
- 二零二五年度出國(guó)留學(xué)學(xué)費(fèi)支付及管理合同3篇
- 二零二五年度煤炭運(yùn)輸合同范本:多式聯(lián)運(yùn)與綜合物流服務(wù)協(xié)議4篇
- 二零二五版文化中心場(chǎng)地租賃協(xié)議書4篇
- 2025年度海洋工程聘用工程師及項(xiàng)目實(shí)施合同4篇
- 2025版充電樁安全風(fēng)險(xiǎn)評(píng)估與應(yīng)急預(yù)案制定合同3篇
- 二零二五版智慧醫(yī)療路演投資合同范本4篇
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計(jì)與授權(quán)使用3篇
- 心肺復(fù)蘇課件2024
- 《城鎮(zhèn)燃?xì)忸I(lǐng)域重大隱患判定指導(dǎo)手冊(cè)》專題培訓(xùn)
- 湖南財(cái)政經(jīng)濟(jì)學(xué)院專升本管理學(xué)真題
- 全國(guó)身份證前六位、區(qū)號(hào)、郵編-編碼大全
- 2024-2025學(xué)年福建省廈門市第一中學(xué)高一(上)適應(yīng)性訓(xùn)練物理試卷(10月)(含答案)
- 《零售學(xué)第二版教學(xué)》課件
- 廣東省珠海市香洲區(qū)2023-2024學(xué)年四年級(jí)下學(xué)期期末數(shù)學(xué)試卷
- 房地產(chǎn)行業(yè)職業(yè)生涯規(guī)劃
- 江蘇省建筑與裝飾工程計(jì)價(jià)定額(2014)電子表格版
- MOOC 數(shù)字電路與系統(tǒng)-大連理工大學(xué) 中國(guó)大學(xué)慕課答案
評(píng)論
0/150
提交評(píng)論