七大排序問題之歸併排序 PHP版

2021-07-09 06:42:13 字數 896 閱讀 3569

<?php

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

function merge(&$array,$p,$q,$r)

for($j=0;$j<$n2;$j++)

$l[$n1]=999;

$r[$n2]=999;

$i=0;$j=0;

for($k=$p;$k<=$r;$k++)

else

$array[$k]=$temp;

}dispalay($array);

}function mergesort(&$array,$p,$r)

} function dispalay(&$arr)

{for($i=0;$i輸出結果為:

1:5:9:6:8:2:3:4:7:

1:5:9:6:8:2:3:4:7:

1:5:9:6:8:2:3:4:7:

1:5:6:8:9:2:3:4:7:

1:5:6:8:9:2:3:4:7:

1:5:6:8:9:2:3:4:7:

1:5:6:8:9:2:3:4:7:

1:2:3:4:5:6:7:8:9:

結果分析:

1.對於,原始序列(1,5,9,6,8,2,3,4,7),進行兩兩劃分

2.第一趟排序是對1,5進行歸併排序

3.第二趟排序是對1,5,9進行歸併排序

4.第三趟排序是對6,8進行歸併排序

5.第四趟排序是對1,5,9,6,8進行歸併排序

6.第五趟排序是對2,3進行歸併排序

7.第六趟排序是對4,7進行歸併排序

8.第七趟排序是對2,3,4,7進行歸併排序

9.第八趟排序是對1,5,6,8,9,2,3,4,7進行歸併排序

七大排序演算法之歸併排序

雖然歸併排序在七大排序演算法中,不是那麼的出眾,但是畢竟人家是乙個穩定的演算法,所以,技多不壓身,何樂為不為呢 還是乙個分治的思想,將乙個陣列分為兩部分,然後對左邊歸併排序,對右邊歸併排序,再將兩個有序子陣列合併即可,那麼怎麼合併兩個陣列呢,簡單一點的辦法就是建立乙個臨時陣列,然後不斷遍歷二個陣列的...

七大排序之希爾排序

希爾排序的實質就是分組插入排序,該方法又稱 縮小增量排序 因dl shell於1959年提出而得名。該方法的基本思想是 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素 組成的 分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序 增量足夠小 時,再對全體元素...

七大排序之堆排序

堆排序與快速排序,歸併排序一樣都是時間複雜度為o n logn 的幾種常見排序方法。學習堆排序前,先講解下什麼是資料結構中的二叉堆。二叉堆是完全二叉樹或者是近似完全二叉樹。二叉堆滿足二個特性 1 父結點的鍵值總是大於或等於 小於或等於 任何乙個子節點的鍵值。2 每個結點的左子樹和右子樹都是乙個二叉堆...