「已注销」 2022-08-20 10:46 采纳率: 90.2%
浏览 21
已结题

HDU2019插入排序优化

问题遇到的现象和发生背景 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。

对于每个测试实例,输出插入新的元素后的数列。

问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    int n,m,i,a;
    while(scanf("%d %d",&n,&m)!=EOF&&n<=100){
        int *a=(int *)malloc(sizeof(int)*(n+1));
        memset(a,0,sizeof(int)*(n+1));
        for(i=0;i<n;i++){
            scanf("%d",&a[i]);
        } 
        i=n-1;
        while(i>=0){         //插入排序 
            if(m<a[i])a[i+1]=a[i];
            else {a[i+1]=m;
            break;
            }
            i--;
        }
        for(i=0;i<=n;i++){
            printf(i==0?"%d":" %d",a[i]);
        }
        printf("\n");
    }
    return 0;
 } 

运行结果及报错内容 输入3 3(换行)1 2 4(换行)能成功输出1 2 3 4
我的解答思路和尝试过的方法 插入排序
我想要达到的结果 第一次写插入排序,不知道有没有可以优化的地方或更规范的写法,感谢指导!
  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-08-20 12:39
    关注

    供参考:

    #include <stdio.h>
    #define N 101
    int main()
    {
        int T, n, m, i, a[N];
        scanf("%d", &T);
        while (T--){
            scanf("%d%d", &n, &m); //n:有序数列的个数 ,m:待插入的数
            if (n == 0 && m == 0) continue;//n和m同时为0标示输入数据的结束,本行不做处理
            for (i = 0; i < n; i++) //输入n个有序数列元素
                scanf("%d", &a[i]);
            if (m > a[n - 1]) { //插入操作
                a[n] = m;
            }
            else {
                for (i = n; m < a[i - 1] && i > 0; i--) {
                    a[i] = a[i - 1];
                }
                a[i] = m;
            }
            for (i = 0; i < n + 1; i++)//输出 插入数后的有序数列
                printf(i == 0 ? "%d" : " %d", a[i]);
            printf("\n");
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月28日
  • 已采纳回答 8月20日
  • 创建了问题 8月20日

悬赏问题

  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?