#include <stdio.h>
void quickSort(int arr[], int low, int high)
{ //low,hight是数组下标即排序的始末位置
int first = low;
int last = high;
int key = arr[first]; //取第一个元素作为key,左右序列都是第一个元素
if(low >= high) //如果位置写错了就不能运行
return;
while(first < last)
{
while(first < last && arr[last] > key)
{
last--;
}
arr[first] = arr[last];//遇到不满足条件的就把它放在前面first的位置
while(first < last && arr[first] < key)
{
first++;
}
arr[last] = arr[first]; //遇到不满足条件的就把它放在后面last的位置
} //first=last即二者重合 退出
arr[first] = key; //保持key的大小,移动key到重合的位置
//排序后左子序列都比key小,右子序列都比key大
quickSort(arr, low, first-1);
quickSort(arr, first+1, high);
}
int main()
{
int i;
int a[10] = {3, 1, 11, 5, 8, 2, 0, 9, 13, 81};
for(i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
quickSort(a, 0, 9);
for(i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}