



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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ō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)的值,所以還需對原子節(jié)點(diǎn)($l)的子節(jié)點(diǎn)進(jìn)行調(diào)整,用遞歸實(shí)現(xiàn) adjustnode($l,$last,$arr); /交換兩個(gè)值 function swap($a,$b)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式設(shè)備調(diào)試方法試題及答案
- 網(wǎng)絡(luò)云計(jì)算技術(shù)測驗(yàn)題及答案
- 數(shù)據(jù)庫開發(fā)中的協(xié)作工具與資源管理試題及答案
- 行政組織理論中的協(xié)同效應(yīng)分析試題及答案
- 公路工程考試面臨的知識更新挑戰(zhàn)試題及答案
- 突破2025年軟件測試工程師考試難度試題及答案
- 行政組織考試的系統(tǒng)化試題及答案
- 行政組織考試的備考指南試題及答案
- 專項(xiàng)公路工程復(fù)習(xí)試題及答案
- 整體把握的信息系統(tǒng)監(jiān)理師考試試題及答案
- 2025-2030新型鋼材產(chǎn)業(yè)市場深度調(diào)研及前景趨勢與投資研究報(bào)告
- 新媒體國企面試題及答案
- 寶寶改姓夫妻協(xié)議書
- 央企華潤集團(tuán)杭州片區(qū)年度品牌傳播策略案
- HG-T 4823-2023 電池用硫酸錳
- 2023年四川省綿陽市中考英語試卷真題(含答案)
- GB/T 9163-2001關(guān)節(jié)軸承向心關(guān)節(jié)軸承
- 皇家寵物食品有限公司的營銷策略分
- [畢業(yè)設(shè)計(jì)精品]6502電氣集中工程設(shè)計(jì)
- 機(jī)電控制與可編程序控制器課程設(shè)計(jì).doc
- 四角方陣刑沖會(huì)和透解
評論
0/150
提交評論