#include <stdio.h>
#define N 10
void quicksort(int* a, int left, int right);
void main()
{
int a[N] = {5, 4, 7, 2, 8, 3, 1, 9, 1, 6};
int i;
quicksort(a, 0, N - 1);
for (i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
}
void quicksort(int* a, int left, int right)
{
int s, i, j, temp;
if (left < right) //0~N-1
{
s= a[left]; //第壹個作為軸
i = left;
j = right + 1; //最後壹個位置
while (1)
{
while (i < N - 1 && a[++i] < s); //直到找到元素比軸大的元素
while (j - 1 > -1 && a[--j] > s); //直到找到元素比軸小的元素
if (i >= j) //i>=j時跳出循環
{
break;
}
//交換兩個元素,比s大的在s右邊,比s小的在右邊
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
a[left] = a[j]; //最左邊換成j位置的元素,比s小
a[j] = s; //把s放到j的位置
quicksort(a, left, j - 1); //遞歸左邊的
quicksort(a, j + 1, right); //遞歸右邊的
}
}