编程初学者入门训练-有序序列插入一个整数
2020-07-09 23:59
295 查看
题目描述
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
输入描述
第一行输入一个整数N(0≤N≤50)。
第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
第三行输入想要进行插入的一个整数。
输出描述
输出为一行,N+1个有序排列的整数。
示例1
输入
5
1 6 9 22 30
8
输出
1 6 8 9 22 30
代码实现
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException{ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.valueOf(in.readLine()); String[] strs = in.readLine().split(" ");//空格分隔的升序序列 int insertnum = Integer.valueOf(in.readLine());//想插入的整数 int[] arr = new int[N+1]; for(int i=0;i<N;i++){ arr[i] = Integer.valueOf(strs[i]); } //确定插入位置 int index = arr.length; for(int i=0;i<arr.length-1;i++){ if(insertnum<arr[i]){ index = i; break; } } //插入位置index后的元素需要往后移一位 for(int i=arr.length-1;i>index;i--){ arr[i] = arr[i-1]; } //插入整数 if(insertnum>arr[N-1]) { arr[index-1] = insertnum;//尾部插入 }else { arr[index] = insertnum; } //输出序列 for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } } }
题目描述
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
输入描述
共三行,
第一行输入一个整数(0≤N≤50)。
第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
第三行输入想要进行插入的一个整数。
输出描述
输出为一行,N+1个有序排列的整数。
示例1
输入
7
5 30 40 50 60 70 90
20
输出
5 20 30 40 50 60 70 90
代码实现
import java.util.Scanner; import java.io.IOException; public class Main{ public static void main(String[] args) throws IOException{ Scanner input = new Scanner(System.in); int N = input.nextInt(); int[] list = new int[N+1]; for(int i=0;i<N;i++){ list[i] = input.nextInt(); } int num = input.nextInt(); int index = list.length; for(int i=0;i<N;i++){ if(num<list[i]){ index = i; //找到插入位置 break; } } for(int i=list.length-1;i>index;i--){ list[i] = list[i-1]; //插入位置后的数往后移一位 } if(num>list[N-1]) { list[index-1] = num; //从尾部插入 }else { list[index] = num; } for(int i=0;i<list.length;i++){ System.out.print(list[i]+" "); //输出序列 } } }
相关文章推荐
- 编程初学者入门训练-有序序列判断
- Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。 Input 输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数
- 有n个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序。
- 对一个有序数组进行折半查找和把一个整数插入这个数组序列,使其仍旧有序
- 1.写一个函数返回参数二进制中1的个数2.获取一个数二进制序列中所有的偶数为和奇数位,分别输出二进序列3.输出一个整数的每一位4.编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(b
- 编程初学者入门训练-图像相似度
- 编程初学者入门训练-X形图案
- 编程初学者入门训练-最高分与最低分之差
- 插入一个整数到一个有序的数组中,并保证该数组是有序的
- (2)单链表的操作 ① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数
- 编程初学者入门训练-简单计算器
- 编程初学者入门训练-N个数之和
- 编程初学者入门训练-统计成绩
- 有n个有序的整数放在一维数组中,输入一个数,将该数放入数组合适的位置,使插入该数后,数组中的元素仍然有序;
- 编程初学者入门训练-逆序输出
- C语言:在一个有序数组中插入一个整数,并保持有序性
- 编程初学者入门训练-菱形图案
- 编程初学者入门训练-矩阵计算
- 如何编写一个程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
- 编程初学者入门训练-密码验证