void quickSort(char* arr,int startPos, int endPos)
{
int i,j;
char ch; //轴枢
ch=arr[startPos]; //将首位元素给轴枢
i=startPos;
j=endPos;
while(i<j) //i,j分别从首尾向中间移动
{
while(arr[j]>=ch && i<j)--j; //首先从尾部,要是尾部元素大于轴枢元素则向左边移动一个,直到移动到的元素小于轴枢元素,停在该元素
arr[i]=arr[j]; //将停在该元素与轴枢元素交换
while(arr[i]<=ch && i<j)++i; //从首部查找移动具体同上
arr[j]=arr[i]; //交换
}
arr[i]=ch; //轴枢位置
if(i-1>startPos) quickSort(arr,startPos,i-1); //轴枢前半部 递归调用
if(endPos>i+1) quickSort(arr,i+1,endPos); //轴枢后半部 递归调用
}
void main()
{
char ch[]="qwertyuiopasdfghjklzxcvbnm";
quickSort(ch,0,25);
printf("\n%s\n",ch);
}