實現思路:每次從陣列裡面選出乙個最大值,一直遞迴
它的最優時間複雜度為o(n)【正序,陣列排好情況下】,最糟糕時間複雜度為o(n^2)【反序:陣列排序剛好相反】
function bubblesort($arr)}}
return $arr; //返回最終結果}
$arrtest=[12,43,54,33,23,14,44,53,10,3,56]; //測試陣列
$res=bubblesort($arrtest);
var_dump($res);
快速排序
實現思路:把第乙個元素作為標記,依次判斷後續的值,如果小於它則放在左邊,如果大於它則放右邊,同理把左右兩部分看成乙個整體一直遞迴,最後再陣列拼接起來
它的最優時間複雜度為o(nlogn)【以標記元素為中心,正好每次左右都能均勻分配】,最糟糕時間複雜度為o(n^2)【標記元素每次是最大或最小值,使所有數都劃分到一邊】
function quicksort($arr)
$index = $arr[0]; // 把第乙個元素作為標記
$left = ; //定義乙個左空陣列
$right = ; //定義乙個有空陣列
for ($i = 1; $i < $count; $i++) else
}$left = quicksort($left); //把left陣列再看成乙個新引數,再遞迴呼叫,執行以上的排序
$right = quicksort($right); //把right陣列再看成乙個新引數,再遞迴呼叫,執行以上的排序
return array_merge($left, [$arr[0]], $right); //最後把每一次的左陣列、標記元素、右陣列拼接成乙個新陣列}
$arrtest=[12,43,54,33,23,14,44,53,10,3,56]; //測試陣列
$res=quicksort($arrtest);
var_dump($res);
排序 氣泡排序 快速排序
快速排序 氣泡排序就是自上向下依次對比兩個數字,若上面的數字大於下面的數字,則兩者交換,否則不交換。這樣每次迴圈結束,未排序的最大的數就到了最下面。如陣列前兩次迴圈過程如下 快速排序的核心是partition 函式,其功能如下所示 34的位置找到後,其將陣列分成兩部分,前一部分都比34小,後一部分都...
排序 氣泡排序 快速排序
1 基本思想 將第乙個記錄的關鍵字與第二個記錄的關鍵字比較,若為逆序,則將兩個記錄交換,再向後比較。關鍵字小的漂浮,關鍵字大的下沉。2 穩定性 演算法穩定。3 時間複雜度 o n 空間複雜度 o 1 4 實現 include define n 5 陣列長度上限 intmain printf 氣泡排序...
排序(氣泡排序 快速排序
關於排序的穩定性 在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中r i r j 且r i 在r j 之前,而在排序後的序列中,r i 仍在r j 之前,則稱這種排序演算法是穩定的 否則稱為不穩定的。一 氣泡排序 氣泡排序的基本思想 每次比較...