从小到大排序
void swap(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp;
}
void quickSort(int *arr,int first,int last){//递归时需要通过首尾下标确定子数组在原数组起始终止位置
if(first>last){//这里是递归的终止条件,所以传入的参数有关
return;
}
int i=first;
int j=last;
int key=arr[first];
/*针对整个传入的序列,将左边的大的与右边的小的不断交换*/
while(i<j){
while(arr[j]>=key&&i<j){
j--;
}
while(arr[i]<=key&&i<j){
i++;
}
swap(arr[i],arr[j]);
}
//当结束循环时,i和j已经指向同一个数了
//不太明白这两句
arr[first]=arr[i];
arr[i]=key;
/*将左右两半子序列传进函数排序*/
quickSort(arr,first,i-1);
quickSort(arr,i+1,last);
}