氣泡排序,快速排序

2021-09-26 04:14:11 字數 1041 閱讀 7320

實現思路:每次從陣列裡面選出乙個最大值,一直遞迴

它的最優時間複雜度為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 之前,則稱這種排序演算法是穩定的 否則稱為不穩定的。一 氣泡排序 氣泡排序的基本思想 每次比較...