在C语言中 编写一个程序实现从小到大排序

在C语言中 设有一组数{1,-2,53,49,144,65,267,98,112}, 编写一个程序实现从小到大排序

#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;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-15
#include <stdio.h>
int main(void)
{
    int i,j,temp;
    int num[9]={1,-2,53,49,144,65,267,98,112};
    for(i=0;i<9;i++)
    for(j=i+1;j<9;j++)
    {
        if(num[j]<num[i])
        {
            temp=num[i];
            num[i]=num[j];
            num[j]=temp;
        }
    }
    for(i=0;i<9;i++)
        printf("%5d",num[i]);
    printf("\n");
    return 0;
}