日记——11.30

插排,神奇的插入排序

是神奇的一天,学会了插入排序,大致的精髓就是比较,从第二个开始把他插入到前面有序数组里,判断它插入的位置如果较小,需要将大数挪位置,给他腾个位置。虽然很抽象,代码也抽象,但是如果模拟一遍就会感觉很神奇

for(int i = 1;i < 10;i ++){
        int key = a[i];
        int j = i - 1;
        while(j >= 0&&a[j] > key){//j不越界,且无序的数小于前面的数,进入循环
            a[j+1] = a[j];j--;//将前面一个数赋值给后面一个数,这样就会重复,同时标记下位置j,然后j--,继续判断再前一个数是否大于该无序数,重复前面操作,知道j= -1,或者无序数大于前一个数。其实这就是转移,挪位置。
        }
        a[j+1] = key;//这就是将无序插入其中。然后继续插下一个
        
    }

大致这样。

大致了解了一下fgets,与之前gets不同,用gets(不能检查预留存储区是否能够容纳实际输入的数据)输入获得的是不含换行符的字符串,将换行符转成了\0,当作字符串的结束,当用puts输出时又将\0转成换行符输出如下

 而fgets函数有点复杂,但很安全。

模板fgets(数组名,数组数-1,指针(stdin));-1是给\n留个位置

关于指针的咱也不太会,以后再改

这就是输入的字符串含\n的一个证据。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值