1048--黑箱子-2023/1/3

文章讲述了在处理大量数据时,使用插入排序代替冒泡排序可以有效避免程序超时的问题。提供了一段C语言代码示例,展示如何在数字序列中插入新数并保持有序。
摘要由CSDN通过智能技术生成

这个题目很容易超时,这里要注意一点就不会超时啦。

就是,在加入一个数时,不要用冒泡排序,用插入排序来做,也就是直接一遍遍历找新的那个数的位置。

OK,这个题目蛮简单的,就直接给各位上代码吧。

#include <stdio.h>
#include <math.h>
#define ll __int64;
const int NUM=1e6;

char s[5];
int a;
int ret[NUM];

int main(){
    int cnt=0,cnt1=1;//前面那个是黑箱子中有多少个数,后面这个是输出黑箱子中数字的序号
    while(scanf("%s",s)!=EOF){
        if(s[0]=='A'){
            scanf("%d",&a);
            //就是一个数字的插入,不要用冒泡排序,太慢了,因为冒泡排序有两重循环
            //注意这个是从后往前找位置
            int flag=0;
            for(int i=cnt;i>=0;i--){
                if(a>=ret[i]){
                     ret[i+1]=a;
                     flag=1;
                     break;
                }
                else ret[i+1]=ret[i];
            }
            if(!flag) ret[0]=a;
            cnt++;//个数要增加一个哦
        }
        else if(s[0]=='G') printf("%d\n",ret[cnt1++]);
        else break;
    }
    return 0;
}

我们明天再见,继续加油哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值