具体代码:
#include<stdio.h>
void swap(int *a,int *b)
{
int temp=0;
temp=*a;
*a=*b;
*b=temp;
}
void quickSort(int *begin,int *end)
{
int *p =begin;
int *q=end; //记录起始位置
int *k=begin; //&a[0]
while(begin<end) //相遇时停止
{
while(begin<end&&*end>=*k)
{
end--;
}
while(begin<end&&*begin<=*k)
{
begin++;
}
swap(begin,end);
}
swap(k,begin);
if(p<q)
{
quickSort(p,end-1); //左边一半
quickSort(begin+1,q); //右边一半
}
}
void printArray(int *begin,int *end)
{
while(begin<=end)
{
printf("%d ",*begin);
begin++;
}
putchar('\n');
}
int main(void)
{
int a[]={3,5,7,1,2,8,9,0};
int len=sizeof(a)/(sizeof a[0]);
quickSort(a,a+len-1);
printArray(a,a+len-1);
}