排序演算法之PHP版快速排序 氣泡排序

2022-10-06 12:24:08 字數 1556 閱讀 7676

一、快速排序

1.簡介

快速排序是由東尼霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要(n log n)次比較。在最壞狀況下則需要(n2)次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他(n log n) 演算法更快,因為它的內部迴圈(inner loop)可以在大部分的架構上很有效率地被實現出來。

快速排序使用分治法(divide and conquer)策略來把乙個序列(list)分為兩個子串行(sub-lists)。

2.步驟

從數列中挑出乙個元素,稱為 「基準」(pivot),

重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作。

遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

3.**實現

複製** **如下:

function quicksort(array $array)

$key = $array[0];

$left = array();

&nbswww.cppcns.comp; $right = array();

for($i=1; $i    

else

}$left = quicksort($left);

$right = quicksort($right);

return array_merge($left, array($key), $right);

} print '

';print_r(quicksort(array(1,4,22,5,7,6,9)));

print '

';4.排序效果

使用快速排序法對一列數字進行排序的過程

二、氣泡排序

1.簡介

氣泡排序(bubble sort,台灣譯為:泡沫排序或氣泡排序)是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他ftrvyo們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。

2.步驟

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

3.**實現

複製** **如下:

php function bubbingsort(array $array)}}

return $array;

} print '

';print_r(bubbingsort(array(1,4,22,5,7,6,9)));

print '

';4.排序過程

使用氣泡排序為一列數字進行排序的過程

本文標題: 排序演算法之php版快速排序、氣泡排序

本文位址:

php排序演算法 氣泡排序,快速排序

氣泡排序實現原理 首先將所有待排序的數字放入工作列表中。從列表的第乙個數字到倒數第二個數字,逐個檢查 若某一位上的數字大於他的下一位,則將它與它的下一位交換。重複步驟 直至再也不能交換。實現 複製 如下 氣泡排序 by www.jbxue.com function bubbingsort array...

php排序演算法 氣泡排序和快速排序

總是對這兩種排序特別迷糊,今天趁活不多,認真看了下,也算對自己有個交代吧 第一 氣泡排序 預設從小到大排序 若從小到大則第二個引數為true function bubbling sort arr,state false else return arr 上午寫了冒泡法,整體思路還是很清晰的,但是到快速...

php排序演算法之氣泡排序

一 原理 二 舉例說明 三 php 實現氣泡排序 對一組資料,比較相鄰資料的大小,將值小資料在前面,值大的資料放在後面。以下都是公升序排列,即從小到大排列 arr array 6,3,8,2,9,1 arr 有6個資料,按照兩兩比較大小如下,注意比較輪數 和 每輪比較次數 第一輪排序 第一輪比較總結...