void quicksort(int *data, int left, int right)
{
if (left >= right){
//function結束
return;
}
//choose data[left] to be the pivot
int pivot = data[left];
int i = left + 1;
int j = right;
while (1){
//找出大於pivort的數值
while (i <= right){
if (data[i] > pivot){
break;
}
i = i + 1;
}
//找出大於pivort的數值
while (j > left){
if (data[j] < pivot){
break;
}
j = j - 1;
}
//j會先結束while, 當i > j時跳出迴圈
if (i > j){
break;
}
//將左右位置互換
swap(&data[i], &data[j]);
}
//將左右位置互換
swap(&data[left], &data[j]);
quicksort(data, left, j - 1);
quicksort(data, j + 1, right);
}
void swap(int *a, int *b)
{
int temp = *b;
*b = *a;
*a = temp;
}