十大演算法系列之 一 快速排序

2021-07-30 12:53:45 字數 1397 閱讀 3117

&1 思想和時間複雜度

&2 演算法

#1. 在待排數列中(n個數)選擇乙個基準數(理論上可以任意);

#2. 剩下的 n-1 個數與基準數對比,比基準數小的放左邊,反之在右邊;(也有人稱為劃分操作)

#3. 一輪迴圈結束,此時基準數是位於它的最終位置;

#4. 重複步驟#1~#3,直到最後乙個基準數左邊和右邊的元素個數為0或1,則排序完成。

&3 舉例

&4 c++程式實現

1 #include2 #include3

4using

namespace

std;56

void quicksort(vector &a, int p, int

q);7

int partition(vector &a, int p, int

q);8

void swapv(int &a, int &b);910

intmain();

12int len =seti.size();

13   quicksort(seti,0,len-1

);14

15   cout << "

the sorted array is: \n";

16for (vector::iterator iter = seti.begin(); iter != seti.end(); iter++)

17   cout << *iter << "\t"

;18   cout <

1920   system("

pause");

21return0;

22}2324

void quicksort(vector &a,int p,int

q)30}31

32int partition(vector &a,int p, int

q)41}42

43if (p != j - 1

)44     swapv(a[p],a[j-1

]);45

46return j - 1;47

}4849void swapv(int &a,int &b)

快速排序

&5 程式實現結果截圖

如果對**優化,親有更好的想法,咱可以一起學習討論哦!

十大經典排序演算法系列 二 插入排序

原理 1 元素依次比較大小,按條件交換位置 2 交換過位置的元素,往回與之前的元素比較大小,找到插入的位置,直到不符合交換位置的條件.跳出迴圈 3 繼續外層迴圈 var arr 0,0,1,2,3,4,5,6,12,22,123,333,333,444,555,666,777,888,999 fun...

十大排序演算法 快速排序

原理 從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽 partition 操作 遞迴地 recursive 把小於基準值元素的子...

十大經典排序演算法之 一 氣泡排序

每回比較都得到乙個最大值,因此內迴圈的限制條件應該是j c void bubblesort int arr,int len python def bubblesort arr for i in range 1 len arr for j in range 0 len arr i if arr j a...