php堆排序實現原理與應用方法

2022-10-04 05:45:08 字數 831 閱讀 2945

這裡以php作為描述語言較詳細講解堆排序原理,因保證程式可讀性,故不做優化,php程式中關於堆的一些概念如下:

假設n為當前陣列的key則,n的父節點為 n>>1 或者 n/2(整除);n的左子節點l= n<<1 或 l=n*2,n的右子節點r=(n<<1)+1 或 r=l+1

$arr=array(1,8,7,2,3,4,6,5,9);

陣列$arr的原形態結構如下:

&www.cppcns.comnbsp;      1

/   

8      7

/         /

2     3      4  6

/ 5  9

heapsort($arr);print_r($arr);

排序後生成標準的小頂堆結構如下:

1/  

2      3

/       / 

4    5      6   7

/ 8  9

既陣列:array(1,2,3,4,5,6,7,8,9):

複製** **如下:

function heapsort(&$arr)

程式設計客棧           else

} //彈出第乙個陣列元素

array_shift($arr); }  

//整理當前樹節點($n),臨界點$last之後為已排序好的元素

function adjustnode($n,$last,&$arr) }  

//交換兩個值

function swap(&$a,&$b)

本文標題: php堆排序實現原理與應用方法

本文位址:

PHP實現堆排序

工作了,面試我工作這家公司時被技術面打擊得不行,因為自己的資料結構等基礎學得實在太差,雖然原來是想做設計師的說。不過看在php寫得還湊合的份上能來實習了,但還是決心惡補一下基礎。其實自己之前也確實感覺到了基礎的重要性,一些比較深的東西都比較底層,不學好根本沒法進行。像我之前用php做websocke...

php快速排序原理與實現方法分析

function partition n,left,right n left n lo n lo pivot return lo functi程式設計客棧on quicksort n,left,right global n dp 0 if left 快速排序是對氣泡排序的一種改進。它的基本思想是 通...

堆排序原理及實現

堆排序 堆排序是利用堆的性質進行的一種選擇排序。下面先討論一下堆。1.堆堆實際上是一棵完全二叉樹,其任何一非葉節點滿足性質 key i key 2i 1 key i key 2i 2 或者key i key 2i 1 key key 2i 2 即任何一非葉節點的關鍵字不大於或者不小於其左右孩子節點的...