遞迴演算法之快速排序法

2021-08-20 22:27:40 字數 844 閱讀 3733

快速排序演算法的所用的方法是左右掃瞄法:當拿到一排無序的數列時,快速排序採取的方法是先找乙個樞軸(即乙個中間值,當然這個值不一定剛好就是這組數的中值)採用左右交替掃瞄法進行排序。

左右交替掃瞄法是:首先從右往左掃瞄這組值,把每乙個值都與樞軸比較,如果大於等於樞軸就繼續向左掃瞄,一旦小於樞軸就把這個值和樞軸交換,因為產生交換,這時就要從左往右開始掃瞄了,如果值小於樞軸就繼續往右掃瞄,一旦大於等於樞軸就把這個值和樞軸交換,產生交換後就又開始從右往左掃瞄繼續剛才的步驟,直到兩邊掃瞄到同乙個值時,這一輪就完成。

因為這是採用了遞迴思想,所以左右掃瞄法可能會要進行好幾遍,以下是實現的**

#includeusing namespace std;

void quick_sort(int a, int start, int end)

} a[i] = s;//因為在之前的交換值過程中a[i]的值已經不是最初的值,所以要變回來

quick_sort(a, start, i - 1);//排序樞軸前數列

quick_sort(a, i + 1, end);//排序樞軸後數列 }}

void put(int a,int length)

}int main() ;

cout << "排序前:";

put(a, 10);

quick_sort(a, 0, 9);

cout << "排序後:";

put(a, 10);

system("pause");

return 0;

}

這短短的**,裡面確是蘊含著大大的智慧型,對演算法越來越感興趣了,哈哈。如果對上面的**有疑問歡迎提問,我很樂意解答。

演算法 之 快速排序法

快速排序演算法 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行 關鍵點 遞迴,折半 通常取第乙個數為對比 時間複雜度 平均 n logn function sort half a...

分治法之快速排序演算法

這週的演算法設計與分析的作業,要求是根據所講基本演算法選擇其一,給出具體事例,並且詳細描述演算法實現過程,同時利用一種語言程式設計實現,得出結果。將整個過程詳細整理上傳平台。上週所講演算法也只有那麼幾種 分治法,動態規劃 貪心演算法 回溯法 分值界限。這次用了分治法解決快速排序的問題。快速排序是c....

快速排序 遞迴演算法

快速排序原理 從乙個陣列中任意挑選乙個元素 通常為最左邊的元素 作為基準數,將剩下的元素和基準數進行比較,將小於等於中軸元素的放到基準數的左邊,經大於 中軸元素的放到基準數的右邊,然後以當前基準數的位置為界,將左半部分陣列和右 半部分陣列堪稱兩個新的陣列,重複上述操作,直到子陣列的元素個數小於等於1...