问答详情
源自:6-1 数组初体验

C语言排序

将整形数组按从小到大排序,然后在这个数组中插入一个新的数,使得这个数组仍然有序,用C语言怎么做,求程序和解释

提问者:满天星17 2016-11-10 10:50

个回答

  • qq_晨曦Flame_04116129
    2016-11-10 20:41:46
    已采纳

    #include<stdio.h>

    #define N 5

    int main()

    {

        int i,j,p,n,temp;

        int a[N],b[N+1];//a[N]为原数组,b[N+1]为插入后的数组


        printf("请输入%d个数\n",N);

        for(i=0;i<N;i++)

           scanf("%d",&a[i]);//a[N]的输入


        for(i=0;i<N-1;i++)//选择法排序,按升序排好a[N]

        {

             p=i;

             for(j=i+1;j<N;j++)

                if(a[i]>a[j])

                   p=j;

                if(p!=j)

                {

                   temp = a[p];

                   a[p] = a[i];

                   a[i] = temp;

                }

        }


        for(i=0;i<N;i++)//输出a[N]的每一项

            printf("%d ",a[i]);

            printf("\n");


        printf("请输入一个数\n");

        scanf("%d",&n);//插入一个数

        for(i=0;i<N;i++)

           b[i] = a[i];

        b[N] = n; //b[N+1]的输入


        for(i=0;i<N;i++)//选择法排序,按升序排好b[N+1]

        {

             p=i;

             for(j=i+1;j<N+1;j++)

                if(b[i]>b[j])

                   p=j;

                if(p!=j)

                {

                      temp = b[p];

                      b[p] = b[i];

                      b[i] = temp;

                }

        }


        for(i=0;i<N+1;i++)//输出b[N+1]的每一项

            printf("%d ",b[i]);

            printf("\n");

    }



    各处都有解释,不懂再问我!

  • 满天星17
    2016-11-12 12:16:20

    用冒泡排序写个程序,多谢