qq_58711632
2021-06-10 16:01
采纳率: 100%
浏览 18

C语言冒泡法排序,插入值后仍有序

用冒泡法对10个整数(这10个整数可随机生成,可初始化,也可以逐个从键盘读入)排序。然后输入一个数,将该数插入到数组中,使插入后的数组仍然有序。并输出插入后的数组。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • CSDN专家-Fay 2021-06-10 16:05
    已采纳

     参考运行一下:

    如有帮助请在我的回答上点个【采纳】,谢谢!

    #include <stdio.h>
    main()
    {
    int i,a[12],t,k,m;
    printf("请输入10个数,输一个回车一次:");
    for(i=0;i<11;i++)
    a[i]=0;
    for(i=1;i<11;i++)
    scanf("%d",&a[i]);
    for(k=1;k<11;k++)
    for(i=k+1;i<11;i++)
    while(a[i-1]>a[i])
    {
    t=a[i-1];
    a[i-1]=a[i];
    a[i]=t;
    }
    printf("排序过后的结果:\n");
    for(i=1;i<11;i++)
    printf("%d ",a[i]);
    printf("\n请插入一个数:\n");
    scanf("%d",&m);
    printf("\n新的排序结果:\n");
    for(i=1;i<11;i++)
    if(a[i]>m)
    break;
    for(k<=11;k>i;k--)
    a[k]=a[k-1];
    a[i]=m;
    for(i=1;i<=11;i++)
    printf("%d ",a[i]);
    }
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • CSDN专家-link 2021-06-10 16:03

    定义长度为11的数组,冒泡法排序,然后搜索大于插入值的位置,将该位置之后的元素都后移一位

    void sort(int a[],int n)
    {
        for(int i=0;i<n-1;i++)
            for(int j=0;j<n-i-1;j++)
            {
                if(a[j] > a[j+1])
                {
                    int t = a[j];
                    a[j] = a[j+1]
                    a[j+1] = t;
                }
            }
    }
    
    void insert(int a[],int n,int b)
    {
        bool t = false;
        for(int i=0;i<n;i++)
        {
            if(b < a[i])
            {
                for(int j=n;j>i;j--)
                    a[j] = a[j-1];
                a[i] = b;
                t = true;
                break;
            }
        }
        if(!t)
            a[n] = b;
    }
    
    void main()
    {
        int a[11] = {39,21,43,94,29,12,3,92,23,5};
        sort(a,10);
        insert(a,10,78);
        for(int i=0;i<11;i++)
            printf("%d ",a[i]);
    }
    评论
    解决 无用
    打赏 举报
  • 有问必答小助手 2021-06-11 10:58

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题