幾種常見的排序演算法

2021-08-20 09:58:29 字數 2265 閱讀 6522

幾種常見的排序演算法

1、桶排序

1)根據傳入的陣列的最大值,定義乙個大陣列

2)while迴圈按照原陣列的最大值依次賦值為新陣列的key值,並自增,把原陣列的值轉化為新陣列的下標

3)迴圈原陣列,判斷原陣列的值在大陣列裡就把它的值加1,並自增,這樣如果原陣列的值出現一次,它的值就是1,如果它出現兩次它的值就是2,以此類推

4)迴圈新陣列,並while迴圈$v,如果$v 大於0,就輸出其key值,並且其$v遞減

這樣就實現了排序功能

倒序就是迴圈陣列的最大值,以新陣列的最大值為條件再次迴圈,如果新陣列對應的下標有值,就輸出當前的最大值,然後遞減,直至輸出原陣列的最小值,方為結束。

**如下:

function

bucket

( $arr )

foreach ($arr

as$k => $v)

#正序foreach ($arr2

as$k => $v)

}#倒序

//while ($max)

// $max --;

//}}

2、氣泡排序

原理:定義乙個陣列獲取它的長度,通過陣列的長度是它要迴圈的次數,然後通過陣列的在第一位和第二位進行比較,如果第一位大於第二位,則第一位和第二位調換位置,如果第一位小於第二位則不替換位置,當下一次迴圈是比較陣列的第二位和第三位,如果第二位大於第三位則調換位置,否則,不調換位置,以此類推,就實現了排序;

function

paosort

($arr)}}

return

$arr;

}

3、選擇排序

原理:

1)給定乙個陣列,獲取陣列的長度,通過他的長度 - 1 進行迴圈,長度減一是因為最後一次不需要自己和自己比較

2)定義乙個變數儲存當前陣列的下標,還是利用陣列的長度進行迴圈,然後通過迴圈從下標為1的和後邊的值依次進行比較,找出陣列最小值,然後賦值為第一位,以此類推,就實現了排序功能

function

selection_sort

($array)

}/*swap$array[$i]and$array[$min]即將當前內迴圈的最小元素放在$i位置上*/

if($min!=$i)

}return

$array;

}

4、插入排序

1)定義陣列,獲取長度

2)定義要比較的value

3)通過陣列的長度,實現迴圈

4)然後通過陣列的第乙個值和第二個值進行比較,如果第乙個值大於第二個值就進行替換。

5)如此進行第二次迴圈,如果第三個值小於第二個值,就進行替換,因為是遞減所以還要進行一次比較,如果改變後的第二個值還是小於第乙個值,就再次進行替換,至此,本次迴圈結束,以此類推,最終實現排序;

function

insertsort

($arr)

else }}

return

$arr;

}

快速排序

原理:先定義乙個陣列,並獲取它的長度,取出陣列的左側的第乙個值和陣列的其他值進行比較,如果大於當前值就放到陣列$left,如果大於當前值就放到$right,這樣陣列的第乙個值就找到了自己的位置,然後用遞迴的手法在呼叫自己,這樣逐層遞迴,陣列所有的值都找到了自己位置,最後進行陣列合併,返回的陣列就是有序的了;

//待排序陣列

$arr=array(6,5,4,8,6,3,2,9,5,1,45,86,43,78,454,44,11);

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

//函式實現快速排序

function

quick_sort

($arr)

$left=array();

$right=array();

$b=$arr[0];

for ($i=1; $i

<$le; $i++) else

}$left=quick_sort($left);

$right=quick_sort($right);

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

}

幾種常見排序演算法

幾種常見排序演算法 1氣泡排序 bubble sort 氣泡排序思路 將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素 第一輪結束後,序列最後乙個元素一定是當前序列的最大值 對序列當中剩下的n 1個元素再次執行步驟1。3.對於長度為n的序列,一共需要執行n 1輪比較 實現 for i...

幾種常見排序演算法

1氣泡排序 bubble sort 氣泡排序思路 1.將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素 第一輪結束後,序列最後乙個元素一定是當前序列的最大值 2.對序列當中剩下的n 1個元素再次執行步驟1。3.對於長度為n的序列,一共需要執行n 1輪比較 實現 for i 0 i n...

幾種常見排序演算法

以下內容包括 氣泡排序,選擇排序,桶排序 一 氣泡排序 bubblesort public class bubblesort int temp 0 for int i 0 i1 i system.out.println arrays.tostring arr 用arrays類中的tostring方法...