为了账号安全,请及时绑定邮箱和手机立即绑定

C语言排序

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

正在回答

2 回答

#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");

}



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

1 回复 有任何疑惑可以回复我~
#1

qq_晨曦Flame_04116129

N的值可以随便改
2016-11-10 回复 有任何疑惑可以回复我~
#2

满天星17 提问者

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

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926206    人
  • 解答问题       20797    个

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

进入课程

C语言排序

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信