幾種常見的排序演算法
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方法...