快速排序是乙個非常有名的排序方法,在實際應用過程當中被選用的概率特別高。
這裡的實現利用了遞迴的方法,快排的思想就是,做一次從第乙個值到倒數第二個值的遍歷,在每次把序列的最後乙個當做參照,然後將小於這個值的數字與前面的值作替換,這裡用到乙個迴圈變數i,從0開始計數,也就是說迴圈完之後,前面的i個數字都比最後的這個參照數字小,然後將第i+1個數字與最後乙個數字互換,這樣,這個參照的數字就出現在了正確的排序位置上。
舉例說明:最開始是[3, 1, 2],從頭開始遍歷,第乙個數字是3,不比2小,所以不動,這時候i=0,然後第二個數字為1,比2小,則2就要與第乙個位置的數字交換,就變成了[1, 3, 2],這時候i=1,迴圈完成了,就交換最後乙個值與索引i上的值,就是交換2和3,這個時候,2就出現在了正確的位置上了,就變成了[1, 2, 3],當然如果前面不止乙個數字,後面也不止乙個數字,那就對前面的陣列以及後面的陣列遞迴的進行處理即可。
具體c++**如下:
#include
#include
#include
using namespace std;
intpartition
(vector<
int>
& nums,
int p,
int r)
;void
quicksort
(vector<
int>
& nums,
int p,
int r)
;void
show
(const vector<
int> nums)
;int
main()
;quicksort
(x,0
, x.
size()
-1);
show
(x);
return0;
}int
partition
(vector<
int>
& nums,
int p,
int r)
}swap
(nums[r]
, nums[i +1]
);return i +1;
}void
quicksort
(vector<
int>
& nums,
int p,
int r)
return;}
void
show
(const vector<
int> nums)
cout << endl;
}
**最後的輸出結果為:1 2 3 4 5 6 8
排序成功。
排序 快速排序,C 實現
本文 的github位址 基本思想 快速排序 是對 氣泡排序 的改進。基本原理 基於分治法,在待排線性表中取乙個元素pivot作為樞軸值,通過一趟排序將待排線性表劃分為獨立的兩部分,第一部分的所有元素小於pivot,第二部分的所有元素大於等於pivot,pivot位於其最終位置。遞迴對兩個子表做快速...
快速排序 c 實現
快速排序思想 基於分治策略,對氣泡排序的一種改進。對於要排序的乙個序列,從中選一值進行排序,將其放入到正確的位置position。然後以position為界,對左右兩部分再做排序。直到劃分的長度為1。步驟 設有一待排序的序列 1.分別設定low hight指向序列的最左端 最右端 從序列中選乙個進行...
快速排序(C 實現)
include using namespace std void swap int a,int b int sort int begin,int end if beginwhile beginif begin return begin void quicksort int begin,int end...