快速排序是一個非常重要的算法,對于大數(shù)據(jù)的排序,效率上要比冒泡排序和插入排序這些算法高很多,所以是程序員必須掌握的算法
- 算法的思路
快速排序算法其實(shí)很簡單,采用分治策略。步驟如下:
- 選取一個基準(zhǔn)元素(pivot)
- 比pivot小的放到pivot左邊,比pivot大的放到pivot右邊
- 對pivot左邊的序列和右邊的序列分別遞歸的執(zhí)行步驟1和步驟2
- 具體代碼如下
/*
* l:需要排序的左邊界
* r:需要排序的右邊界
* a:需要排序的數(shù)組
*/
void quickSort(int *a, int l, int r) {
if (l < r) {
int i,j,x;
i = l;
j = r;
x = a[i];
while (i < j) {
while(i < j && a[j] > x) {
j--; // 從右向左找第一個小于x的數(shù)
}
if(i < j)
a[i++] = a[j]; //這里是i++所以是先賦值后自加
while(i < j && a[i] < x) {
i++; // 從左向右找第一個大于x的數(shù)
}
if(i < j)
a[j--] = a[i];
}
a[i] = x;
quickSort(a, l, i-1); /* 遞歸調(diào)用 */
quickSort(a, i+1, r); /* 遞歸調(diào)用 */
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。