#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main(int argc,char **argv)
{
int a[]={1,-2,53,49,144,65,267,98,112};
int i;
qsort(a,sizeof(a)/sizeof(int),sizeof(int),cmp);
for(i=0;i < sizeof(a)/sizeof(int);++i)
printf("%d ",a[i]);
printf("\n");
return 0;
}
如果要自己实现排序函数的话
#include <stdio.h>
void qsort(int *a,int left,int right)
{
int p=(left+right)/2; //以中间数作为主元
int k=a[p];
int i=left,j=right;
while(i < j)
{
//从左边开始将大于主元的数放在主元右边
while((i <= p) && (a[i] <= k))
++i;
if(i < p)
{
a[p]=a[i];
p=i;
}
//从右边开始将小于主元的数放在左边
while((j >= p) && (a[j] >= k))
--j;
if(j > p)
{
a[p]=a[j];
p=j;
}
}
a[p]=k;
//如果左边的数大于1个则递归左边
if(p-left > 1)
qsort(a,left,p-1);
//如果右边的数大于1个则递归右边
if(right-p > 1)
qsort(a,p+1,right);
}
int main(int argc,char **argv)
{
int a[]={1,-2,53,49,144,65,267,98,112};
int i;
qsort(a,0,sizeof(a)/sizeof(int)-1);
for(i=0;i < sizeof(a)/sizeof(int);++i)
printf("%d ",a[i]);
printf("\n");
return 0;
}