排序演算法之 歸併排序 php

2021-10-05 09:01:38 字數 1169 閱讀 1792

歸併排序(merge sort)是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。和選擇排序一樣,歸併排序的效能不受輸入資料的影響,但表現比選擇排序好的多,因為始終都是 o(nlogn) 的時間複雜度。代價是需要額外的記憶體空間。將資料分為兩段,從兩段中逐個選最小的元素移入新資料的開頭。

1、將陣列以某個值為中間點,分割為左右兩部分

2、將左右陣列在遞迴的進行第一步,直至陣列長度為1,不可分割,返回陣列

3、依次將返回的陣列排序為有序陣列,排序完成

);//將陣列以某個數為點,分割成左右兩部分,並遞迴進行,直到陣列單位長度為1

$left

=array_slice

($arr,0

,$middle);

$right

=array_slice

($arr

,$middle);

$left

=mergesort

($left);

$right

=mergesort

($right);

//將遞迴返回的陣列合併為有序陣列

return

change

($left

,$right);

}//將兩個有序陣列進行排序

function

change

($arra

,$arrb

)return

array_merge

($arrc

,$arra

,$arrb);

}var_dump

(mergesort

($arr))

;//array(10) [8

,15,20

,22,29

,49,50

,50,100

,101

];菜鳥教程《十大程式設計演算法助程式設計師走上高手之路》

排序演算法之歸併排序

歸併排序也是經典的使用分治法思想的代表演算法之一。歸併排序的效率很高,而且是一種穩定的排序。其總體的思想思路就是將待排序的元素分成大致相同的兩個子集合,分別對兩個子集合進行排序,最終將排序的子集合合併成排好序的總集合 歸併排序c 實現如下 include void mergesort int arr...

排序演算法之歸併排序

歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用,歸併排序將兩個已排序的表合併成乙個表。歸併排序基本原理 通過對若干個有序結點序列的歸併來實現排序。所謂歸併是指將若干個已排好序的部分合併成乙個有序的部分。歸併排序基本思...

排序演算法之歸併排序

歸併排序,和快排一樣同樣採用了分治的思想,將兩個 或以上 有序表合併成乙個新的有序表。歸併排序步驟如下 把n個記錄看成 n個長度為 1 的有序子表 進行兩兩歸併使記錄關鍵字有序,得到 n 2 個長度為 2 的有序子表 重複第2步直到所有記錄歸併成乙個長度為n的有序表為止。下面是歸併排序演算法的遞迴實...