C语言排序

来源:6-1 数组初体验

满天星17

2016-11-10 10:50

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

写回答 关注

2回答

  • 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

    可以这样做吗? 1、首先在数组中找到要插入元素的位置 2、将ai,ai+1……an-1依次后移一个位置,留出位置i 3、将新元素存放到第i个位置 求程序

    2016-11-11 09:45:51

    共 2 条回复 >

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

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

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926021 学习 · 20793 问题

查看课程

相似问题