快速排序2

2021-06-16 05:05:03 字數 734 閱讀 4393

#include 

#include 

using namespace std;

int partition(int a,int p,int r)

if (ix

//j後退將不符合的數與主元調換,進而放到合適的位置

while (a[j]>=x&&i

if (i

}//相等時返回分割線的位置

return i; }

void quicksort(int a,int p,int r)

//快速排序

} int main() ;

int i;

srand((unsigned)time(null));

for(i=0;i<20;i++)

cout<< endl;

quicksort(number,0,19);

for(i=0;i<20;i++)

cout<< endl;

return 0; }

/*1.從一端選定主元

2.再從另一端開始前進,當遇到不滿足的數,就將其與主元交換

3.此時主元已經到了另一邊,再從另外一邊開始出發,當遇到不滿足的數是,在將其與主元交換

4.重複的交替前進與交換,將不滿足的數交換到滿足條件的集合中並且主元也在越來越趨於分割線

5.重複2,3,直到前進到一樣的位置是停止,停止的那個位置就是分割線

*/

快速排序2

public static void quicksort2 int a,int left,int right pivot a left pivot中存的就是基準數 i left j right while i j 再找做左邊的 while a i pivot i 交換兩個數在陣列中的位置 if i ...

快速排序2

include include usingnamespacestd intpartition inta,intp,intr if ix j後退將不符合的數與主元調換,進而放到合適的位置 while a j x i if i 相等時返回分割線的位置 returni voidquicksort inta...

2 快速排序

快速排序思想 每次找到乙個標桿,在序列中的前面部分放置比標桿小的元素,在序列後面部分放置比標桿大的元素,那麼標桿放置的位置則可以確認。待主迴圈結束,則是排序好的序列。確認標桿位置 在排序過程中,需要兩個前後索引index left index right index left 向後前進,而index...