排序演算法之一 快速排序

2021-07-14 07:30:24 字數 746 閱讀 7619

1.先從數列中取出乙個數作為基準數。

2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。

3.再對左右區間重複第二步,直到各區間只有乙個數。

1、預排序的輸入非常常見,因此不要選擇第乙個數作為基準數;

2、隨機數的生成也較為昂貴;

3、採用三數中值分割法:取左中右三個元素的中值作為基準數,可以減少大約14%的比較次數。

當排序陣列較小時(n < 20),快速排序不如插入排序好。

media3()實現基準元的選擇:

const int & media3(int data, int left, int right)

核心演算法:

void quicksort(int data, int left, int right)

swap(data[i], data[right - 1]);

quicksort(data, left, i - 1);

quicksort(data, i + 1, right);

} else

insertsort(data, left, right);

}void quicksort(int data, int length)

最壞情況:o(n2)

最好情況:o(nlogn)

平均情況:o(nlogn)

穩定性:不穩定

演算法 排序之一 氣泡排序

如果資料按照一定的順序進行排序,資料處理的效率將顯著的提高。演算法是程式設計的精髓,乙個高效 而合適的演算法能極大的減少時間消耗與空間消耗,提到 合適 是因為沒有哪個演算法可以在所有情況下都表現出色,同樣是排序,在不同資料規模下各種排序演算法有不同的效能表現,選擇合適的解決演算法的才能最大限度地提高...

排序演算法(一) 快速排序

突然覺得在本科的時候自己的基本功練習的不是很過關,趁著學python的熱乎勁好好把基礎演算法過一過,等以後面試的時候也不會死的太慘。快速排序 quicksort 快速排序的可以說是在資料量較大且資料夠隨機的情況下,平均時間複雜度最好的演算法,如果你沒辦法判斷待排序資料的隨機度和規模,用quickso...

排序演算法一 快速排序

package math 快速排序 思路 使用兩個座標指標low,high 和基準值 key為第乙個值 low 初始化時設定序列的頭和尾為low,high。從high開始比較key,如果比key小則交換位置,然後從low比較key如果大於key則交換位置 如此反覆執行 author cyd publ...