1.先從數列中取出一個數做爲基準數。ui
2.分區過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。遞歸
3.再對左右區間重複第二步,直到各區間只有一個數。sort
時間複雜度:O(N*logN);時間
代碼:while
void quick_sort(int s[], int l, int r)遞歸調用
{void
if (l < r)
{
int i = l, j = r, x = s[l];
while (i < j)
{
while(i < j && s[j] >= x) // 從右向左找第一個小於x的數
j--;
if(i < j)
s[i++] = s[j]; // 進行替換
while(i < j && s[i] < x) // 從左向右找第一個大於等於x的數
i++;
if(i < j)
s[j--] = s[i];
}
s[i] = x; // 剩餘的位置即爲x
quick_sort(s, l, i - 1); // 遞歸調用
quick_sort(s, i + 1, r);
}
}