快速排序之C 實現

2022-02-04 09:01:27 字數 1719 閱讀 5478

快速排序之c++實現

一趟快速排序的演算法是:

1)設定兩個變數i、j,排序開始的時候:i=0,j=n-1;

2)以第乙個陣列元素作為關鍵資料,賦值給key,即key=a[0];

3)從j開始向前搜尋,即由後開始向前搜尋(j--),找到第乙個小於key的值a[j],將a[j]和a[i]互換;

4)從i開始向後搜尋,即由前開始向後搜尋(i++),找到第乙個大於key的a[i],將a[i]和a[j]互換;

5)重複第3、4步,直到i=j; (3,4步中,沒找到符合條件的值,即3中a[j]不小於key,4中a[i]不大於key的時候改變j、i的值,使得j=j-1,i=i+1,直至找到為止。找到符合條件的值,進行交換的時候i, j指標位置不變。另外,i==j這一過程一定正好是i+或j-完成的時候,此時令迴圈結束)。

一、源**:quicksort.cpp

1 #include2

using

namespace

std;3/*

定義輸出一維陣列的函式*/4

void print(int array, intn)5

10 cout <

1213

//選擇基準(軸)

14int partition(int array, int low, int

high)

1523

int temp =array[low];

24 array[low] =array[high];

25 array[high] =temp;

26//

high位置為軸點,high左邊的不大於high右邊的

27while (low < high&&array[low] <=array[high])

2831 temp =array[low];

32 array[low] =array[high];

33 array[high] =temp;34}

35return

low;36}

3738

void quicksorthelp(int array, int low, int

high)

3948}49

50void quicksort(int array, int

n)51

5556

intmain()57;

60//

輸出原始陣列

61 cout << "

原始陣列是:

"<

62 print(array, 10

);63

//對陣列進行排序

64 quicksort(array, 10

);65

//輸出排序後的陣列

66 cout << "

排序後的陣列是:

"<

67 print(array, 10

);68

return0;

69 }

二、執行效果

排序演算法C 實現之快速排序詳解

將一組大規模無序陣列變為有序 在陣列中隨機選擇乙個數作為基準數temp,在陣列中從後往前找乙個比temp小的數lo,交換lo和temp 在陣列中從前往後找乙個比temp大的數hi,交換temp和hi 重複2 3找lo和hi,直到找不到這樣的數lo,hi。此時temp左邊的數都 它,右邊的數都 它。此...

排序 快速排序,C 實現

本文 的github位址 基本思想 快速排序 是對 氣泡排序 的改進。基本原理 基於分治法,在待排線性表中取乙個元素pivot作為樞軸值,通過一趟排序將待排線性表劃分為獨立的兩部分,第一部分的所有元素小於pivot,第二部分的所有元素大於等於pivot,pivot位於其最終位置。遞迴對兩個子表做快速...

快速排序 c 實現

快速排序思想 基於分治策略,對氣泡排序的一種改進。對於要排序的乙個序列,從中選一值進行排序,將其放入到正確的位置position。然後以position為界,對左右兩部分再做排序。直到劃分的長度為1。步驟 設有一待排序的序列 1.分別設定low hight指向序列的最左端 最右端 從序列中選乙個進行...