PHP常用一維陣列排序

2021-06-27 06:07:09 字數 2641 閱讀 7334

<?php

/*【插 入排序(一維陣列)】

【基本思想】:每次將乙個待排序的資料元素,插入到前面已經排好序的數列中的適當位置,使數列依然有序;直到待排序資料元素 全部插入完為止。

【示例】:

[初始關鍵字] [49] 38 65 97 76 13 27 49

j=2(38) [38 49] 65 97 76 13 27 49

j=3(65) [38 49 65] 97 76 13 27 49

j=4(97) [38 49 65 97] 76 13 27 49

j=5(76) [38 49 65 76 97] 13 27 49

j=6(13) [13 38 49 65 76 97] 27 49

j=7(27) [13 27 38 49 65 76 97] 49

j=8(49) [13 27 38 49 49 65 76 97]

*/function insert_sort($arr)

}return $arr;}/*

【選擇排序(一維陣列)】

【基 本思想】:每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。

【示例】:

[初 始關鍵字] [49 38 65 97 76 13 27 49]

第一趟排序後 13 [38 65 97 76 49 27 49]

第 二趟排序後 13 27 [65 97 76 49 38 49]

第三趟排序後 13 27 38 [97 76 49 65 49]

第 四趟排序後 13 27 38 49 [49 97 65 76]

第五趟排序後 13 27 38 49 49 [97 97 76]

第 六趟排序後 13 27 38 49 49 76 [76 97]

第七趟排序後 13 27 38 49 49 76 76 [ 97]

最 後排序結果 13 27 38 49 49 76 76 97

*/function select_sort($arr)

if($k != $i)

}return $arr;}/*

【氣泡排序(一維陣列) 】

【基本思想】:兩兩比較待排序資料元素的大小,發現兩個資料元素的次序 相反時即進行交換,直到沒有反序的資料元素為止。

【排序過程】:設想被排序的陣列r[1..n]垂直豎立,將每個資料元素看作有重量的氣泡,根據 輕氣泡不能在重氣泡之下的原則,

從下往上掃瞄陣列r,凡掃瞄到違反本原則的輕氣泡,就使其向上"漂浮",如此反覆進行,直至最後任何兩個氣泡都是 輕者在上,重者在下為止。

【示例】:

49 13 13 13 13 13 13 13

38 49 27 27 27 27 27 27

65 38 49 38 38 38 38 38

97 65 38 49 49 49 49 49

76 97 65 49 49 49 49 49

13 76 97 65 65 65 65 65

27 27 76 97 76 76 76 76

49 49 49 76 97 97 97 97

*/function bubble_sort($array)

}}return $array;}/*

【快速排序(一 維陣列)】

【基本思想】:在當前無序區r[1..h]中任取乙個資料元素作為比較的"基準"(不妨記為x),

用此基準將當前無序區劃分為 左右兩個較小的無序區:r[1..i-1]和r[i 1..h],且左邊的無序子區中資料元素均小於等於基準元素,

右邊的無序子區中資料元素均大 於等於基準元素,而基準x則位於最終排序的位置上,即r[1..i-1]≤x.key≤r[i 1..h](1≤i≤h),

當r[1..i-1] 和r[i 1..h]均非空時,分別對它們進行上述的劃分過程,直至所有無序子區中的資料元素均已排序為止。

【示例】:

初始關鍵字 [49 38 65 97 76 13 27 49]

第一次交換後 [27 38 65 97 76 13 49 49]

第二次交換後 [27 38 49 97 76 13 65 49]

j向左掃瞄,位置不變,第三次交換後 [27 38 13 97 76 49 65 49]

i向右掃瞄,位置不變,第四次交換後 [27 38 13 49 76 97 65 49]

j向左掃瞄 [27 38 13 49 76 97 65 49]

(一次劃分過程)

初始關鍵字 [49 38 65 97 76 13 27 49]

一趟排序之後 [27 38 13] 49 [76 97 65 49]

二趟排序之後 [13] 27 [38] 49 [49 65]76 [97]

三趟排序之後 13 27 38 49 49 [65]76 97

最後的排序結果 13 27 38 49 49 65 76 97

各趟排序之後的狀態

*/function quick_sort($array){

if (count($array) <= 1) return $array;

$key = $array[0];

$left_arr = array();

$right_arr = array();

for ($i=1; $i

PHP陣列排序,一維陣列,二維陣列排序。

一維陣列排序 1 sort,rsort排序 r reverse表示翻轉,即為降序排列 通過鍵值排序。arr array 10,2,4,1,5,8,7,9 等效於 arr array 0 10,1 2,2 4,3 1,4 5,5 8,6 7,7 9 預設的排序,按鍵值公升序排序,鍵名被從新規定,例如1...

PHP之一維陣列 二維陣列排序

sort 以公升序對陣列排序 rsort 以降序對陣列排序 asort 根據值,以公升序對關聯陣列進行排序 ksort 根據鍵,以公升序對關聯陣列進行排序 arsort 根據值,以降序對關聯陣列進行排序 krsort 根據鍵,以降序對關聯陣列進行排序 usort 根據值,使用者自定義函式進行排序 u...

PHP程式開發之一維陣列排序

使用以下函式能夠對陣列中的元素以字母或數字順序進行公升序或降序排序 sort 以公升序對陣列排序 rsort 以降序對陣列排序 asort 根據值,以公升序對關聯陣列進行排序 ksort 根據鍵,以公升序對關聯陣列進行排序 arsort 根據值,以降序對關聯陣列進行排序 krsort 根據鍵,以降序...