已有一个排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中
先来看看以下代码,这是其他博友的思路,这代码看似没有问题,其实存在很大的BUG,当插入的目标比str[0]更小的时候就会出错。相信仔细的人就很容易发现问题。
#include<stdio.h>
int main()
{int i,num;int str[]={1,3,4,5,6,7,8,9,10,89,100};int len=sizeof(str)/sizeof(str[0]);scanf("%d",&num);for(i=len-1;i>=0;i--){if(str[i]>num){str[i+1]=str[i];}else{str[i+1]=num;break;}}for(i=0;i<len+1;i++)printf("%d ",str[i]);return 0;
}
程序的优化:
#include<stdio.h>
int main()
{int i,num;int str[]={1,3,4,5,6,7,8,9,10,89,100};int len=sizeof(str)/sizeof(str[0]);scanf("%d",&num);for(i=len;i>0&&str[i-1]>num;i--){str[i]=str[i-1];} str[i]=num;for(i=0;i<len+1;i++)printf("%d ",str[i]);return 0;
}
优化后的程序就不会出现以上的BUG了。
以下是另一种思路:
#include<stdio.h>
int main()
{//定义数组长度,记住,数组定义长度一定要比预先设定的长度至少加一int i,num;int str[]={1,3,4,5,6,7,8,9,10,89,100};int len=sizeof(str)/sizeof(str[0]);int length=len+1;//插入后总长度scanf("%d",&num);for(i=0;i<len;i++){if(num<=str[i])//找到插入位置 {for( ;len>i;len--){str[len]=str[len-1];//把之后的数往后挪移一位 }str[i]=num;//把目标插入 break;}else if(num>str[len-1]){//如果插入目标大于数组中所有数,则此时直接插入到最后 str[len]=num;break;}}for(i=0;i<length;i++)//输出插入后数组 {printf("%d ",str[i]);}return 0;
}
已有一个排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中相关推荐
- C语言学习之有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中 #include <stdio.h> void main(){int a[11]={25,32,65,74,84,9 ...
- 有一个已排好序的数组 要求输入一个数后 按原来排序的规律将它插入数组中
有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中 思路:先定义一个数组,留出一个位置,给输入的那个数一个地方.然后分两种情况: 1:输入的数比最大的数小,两两交换位置,直到大于相 ...
- 4.19 C语言练习(已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中)
[练习] 题目要求:已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中. 输入:第一行,原始数列. 第二行,需要插入的数字. 输出:排序后的数列例如:输入:1 7 8 ...
- 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
题目描述 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中. 输入 第一行,原始数列. 第二行,需要插入的数字. 输出 排序后的数列 样例输入 1 7 8 17 23 2 ...
- ACMNO.20 C语言-插入队列 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。 输入 第一行,原始数列。 第二行,需要插入的数字。
题目描述 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中. 输入 第一行,原始数列. 第二行,需要插入的数字. 输出 排序后的数列 样例输入 1 7 8 17 23 2 ...
- 有一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中。——C与C++实现
题目:一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中.(本例中输入的是一个升序的数组) 程序分析: (1)判断输入的数是否大于数组中最后一个元素,如果成立,将输入的数插入数组的末尾 ...
- Python Challenge-39 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
#题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. #!/usr/bin/python 3 # -*- coding: UTF-8 -*- #两种方法_Author_ = ...
- C++经典算法题-有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 题目 题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 2. 分析 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次 ...
- C语言编程>第三周 ⑥ 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
例题:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 代码如下: /*程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个 ...
- python练习39:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
#有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. a=2 list1=[1,3,5,6,8] i=0 #if elif 和else语句用来判断列表原来的排序规律,递减.递增还是 ...
最新文章
- MAYA 2022基础入门学习教程
- 一文掌握异常检测的实用方法 | 技术实践
- python之Scrapy框架的第一个爬虫
- 可能用到的C# WinForm技术小结
- 五天带你学完《计算机网络》·第二天·数据链路层
- JVM调优:常见垃圾回收器组合
- 语义分割损失函数系列(1):交叉熵损失函数
- LeetCode 249. 移位字符串分组(哈希)
- Team Foundation Server 2010 安装、部署与配置(六):创建 Team Project .
- 小微型计算机2018北大核心,2018年全国北大中文核心期刊目录
- C++向函数传递数组
- Windows 10 全新界面来了:焕然一新!
- win10系统安装jdk8全过程
- IEEE 会议论文的参考文献
- 如何画一个对话气泡框(css实现)
- signature=9b2caa13f2468eba05d2d57d9a88606d,【音响聚焦】顶级Hi-End音响发烧器材介绍(功放篇)...
- 单片机c语言小波阈值降噪,一种基于改进阈值函数的小波阈值降噪算法
- java经典源码_java经典源代码
- 64位先行进位加法器的原理
- dns检测工具命令总结
热门文章
- padstack editor制作过孔
- BRC4工具1.2.2入门教程学习
- python石头剪刀布游戏代码输入格式随机数种子设置为0_Python模拟石头剪刀
- 编译原理逆波兰式实验java_【实验三】—— 逆波兰式生成实验报告
- 【清华夏令营2016模拟5.31】图森破
- H5页面投票怎么制作
- mixamo骨骼_Mixamo——在线三维人物角色骨骼自动绑定,上千动作库直接生成人物动画...
- 斐波那契数列(入门c语言)
- 三维场景注记的配置相关(学习记录)
- linux 编辑模式使用sed,sed命令的用法和vim编辑器的使用