快速排序之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指向序列的最左端 最右端 從序列中選乙個進行...