快速排序 演算法 詳解 及 深度優化

2021-08-27 10:24:46 字數 1088 閱讀 1173

基本思想:(以按從小到大排序為例說明)通過多次的排序,每次的排序均將要排序的陣列分為兩部分,前一部分均比中間值小,後一部分均比中間值大,這樣重複遞迴下去將每一部分按相同的思路進行分割,最終使整個陣列達到從小到大有序排列。

較氣泡排序的優點:同為通過不斷的比較和移位來得到有序陣列,但快排增大了比較和移動的距離,使關鍵字大的能從最前移到最後,關鍵字小的能從叫最後移到最前,從而減少了比較和移動的次數。

關鍵**:

int qsort(int arr, int low, int high)//len不包括arr[0]

return 0;

}int partition(int arr, int low, int high)

return low;//當low,high指向同一值時退出迴圈,此時low,high指向pivot

}int swap(int arr, int low, int high)

以上為 基本 快拍演算法的實現。可通過下面測試驗證:

#include #include #include int array[50] = ;

int partition(int arr, int low, int high);

int qsort(int arr, int low, int high);//len不包括arr[0]

int swap(int arr, int low, int high);

int main()

arr[low] = pivot;

return low;

}

3.優化小陣列排序方案

思想:快排適合 陣列較大時的排序,較少時不如簡單排序。

方案:qsort()排序對陣列大小進行判斷,選擇適當的排序。

4.優化遞迴操作

思想:過多遞迴占用大量堆疊,同時入棧退棧浪費大量時間,改為迭代

int qsort(int arr, int low, int high)//len不包括arr[0]

return 0;

}

講解完畢。

氣泡排序演算法詳解及優化

排序原理 比較兩個相鄰的元素,將值大的元素交換至右端,小的元素向上冒泡,這也是冒泡演算法名稱的由來。排序流程如下 1 對陣列中的各資料,依次比較相鄰的兩個元素大小,即第0和第1個比較,第1個和第2個比較.第n 2個和和第n 1個比較,每次比較中如 果前面的大於後面的就交換,這樣第一輪即n次比較後,最...

快速排序演算法及優化(Java實現)

快速排序思想 1.找基準 定義high,low,temp,先讓tmp low值,從high位置開始找比tmp小的值,沒有就high 有就讓low值等於high值,然後從low位置開始找比tmp大的值,沒有就low 有就讓high值等於low值,然後又從high位置開始找比tmp小的值,以此類推,直到...

快速排序演算法詳解

1.1 演算法分析 快速排序是一種不穩定的,時間複雜度為o nlogn 的排序演算法.基本思想 1.選定基準值key。2.通過雙指標不斷地移動,將比key大的值移動到key的右邊,比key小的值移動到key的左邊,直到雙指標相遇 即代表該過程已完成 3.上述過程完成後,對於以原key區分形成的兩個子...