排序 歸併排序

2021-07-30 02:19:28 字數 1037 閱讀 9698

歸併排序的基本思想是:將兩個(或以上)的有序表組成新的有序表。

更實際的意義:可以把乙個長度為n 的無序序列看成是 n 個長度為 1 的有序子串行,首先做兩兩歸併,得到n / 2個長度為 2 的子串行 ;再做兩兩歸併,…,如此重複,直到最後得到乙個長度為 n 的有序序列。

關鍵字序列t=(21,25,49,25*,93,62,72,08,37,16,54),請給出歸併排序的具體實現過程。

php的實現

<?php 

//歸併操作

function merge(array &$arr,$start,$mid,$end)

else

}//將第乙個子串行的剩餘部分新增到已經排好序的 $temparr 陣列中

while($i != $mid+1)

//將第二個子串行的剩餘部分新增到已經排好序的 $temparr 陣列中

while($j != $end+1)

for($i=$start; $i

<=$end; $i++)

}function msort(array &$arr,$start,$end)

}//歸併演算法總函式

function mergesort(array &$arr)

$arr = array(2,3,1,5,4);

mergesort($arr);

var_dump($arr);

執行結果:

排序 歸併排序

歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。歸併 將兩個已經排好序的集合合併到乙個集合眾,並且保證新的集合也是有序的。核心點 只有乙個元素的集合是已經排好序的集合。歸併排序是建立在...

排序 歸併排序

歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。2 路歸併演算法 1.演算法基本思路 設兩個有序的子檔...

排序 歸併排序

利用遞迴的思想,當n 1時,只有乙個元素需要排序,為遞迴臨界條件 否則,遞迴的將前半部分資料和後半部分資料各自歸併排序,得到排序後的兩部分資料,然後再將得到的兩部分合併到一起。mergesort algorithm public void mergesort int data mergesort例程...