1.以中間值作為基準數
void
quick_sort
(int q,
int l,
int r)
quick_sort
(q, l, j)
;quick_sort
(q, j +
1, r)
;}
2.以第乙個/最後乙個數作為基準數
int
part_sort
(int q,
int l,
int r)
q[l]
= q[i]
; q[i]
= temp;
return i;
}void
quick_sort
(int q,
int l,
int r)
遞迴其實是乙個壓棧、出棧的過程,現如今不用遞迴,那我們就使用棧來儲存劃分區間
int
part_sort
(int q,
int l,
int r)
q[l]
= q[i]
; q[i]
= temp;
return i;
}void
quick_sort
(int q,
int l,
int r)
if(index +
1< rr)
// 右區間
}}
快速排序遞迴與非遞迴
快速排序思想 以公升序為例 在要排序的序列中選乙個基準,使它左邊的數都比它小,右邊的數都比它大。具體步驟 1 區間選乙個key,可以選區間右邊界的那個數 2 讓begin從區間左邊界開始往後找大於key的數,找到後停下來,再讓end從區間右邊界 1開始往前找小於key的數,找到後讓它和begin找的...
快速排序 遞迴與非遞迴
快速排序演算法,簡稱快排,是最實用的排序演算法,沒有之一,各大語言標準庫的排序函式也基本都是基於快排實現的。快排基本思路 快速排序基本思想是 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可...
快速排序實現(遞迴 非遞迴)
首先是劃分演算法,假設每次都以第乙個元素作為樞軸值,進行一趟劃分 int partition int a,int low,int high a low pivot 將樞軸值元素置於最終位置 return low 第乙個while迴圈裡的 還可以採用如下形式 while low high a high...