一、快速排序遞迴演算法
1、對下列採用快速排序
2、可以把最左邊 4 作為基數 然後分別從兩邊出發進行檢索(一定要從右邊開始 如果從左邊開始的話等下結果為 53241
因為我們要使左邊的數小於基數 從左邊開始 我們檢索是在大於基數那個位置停止 這時和基數交換 使左邊的數大於基數 導致結果出錯)
首先要從2開始檢索向左分別和基數(4)比較,如果小於基數(4),則和4交換,結果為
再從右邊出發 2出發向右檢索找到乙個比基數(4)大得數(5>4)和4交換結果
這個時候 回到右邊檢索 找到乙個比基數小的數 和基數交換 結果為
這個時候指標相遇 第一次排序結束 這個時候 4 (基數)的位置已經正確了
只要我們分別對 4 的左邊和右邊按照上面的方法進行排序 就能得出正確結果
這可以用遞迴實現 條件結束為 if(右邊》=左邊)即指標相遇 這就是快速排序演算法。
排序演算法思想記錄 快速排序演算法
思路 選取陣列中任意乙個數字作為對比位pivot,然後定義兩個指標位left right,分別從陣列開始和結束位置向內掃瞄,每次先動乙個指標位,如right遇到小於pivot的值,將該值存放到左指標處,接著左指標向內位移,遇到大於pivot的值存放至右指標處,依次迴圈到left與right重合,則完...
快速排序思想
本文通俗易懂,但有的描述有問題,轉至 高快省的排序演算法 有沒有既不浪費空間又可以快一點的排序演算法呢?那就是 快速排序 啦!光聽這個名字是不是就覺得很高階呢。假設我們現在對 6 1 2 7 9 3 4 5 10 8 這個10個數進行排序。首先在這個序列中隨便找乙個數作為基準數 不要被這個名詞嚇到了...
演算法分析 分治思想之快速排序
優化乙個演算法的最根本的原理就是減少演算法的基本操作。分治法的設計思想是,將乙個難以直接解決的大問題,分割成一些規模較小的相同問題,以便各個擊破,分而治之。於是,在快速排序中,我們通過分割陣列的思路來將大問題分割成小規模的問題,與二分搜尋法類似的是,在二分法 中,我們需要進行的操作是搜尋,是在已經排...