编写程序实现如下功能。要求用户给定一个升序整形数组,并从键盘上输入任意一整数,将该整数插入到数组中使得数组任然有序。并将更新后的数组输出。(40分)
提示:假设定义数组a并赋初始值,注意数组是升序数组,数组a的元素需要从小到大是。从键盘输入一个数n。首先需要确定n出入数组的位置下标。依次比较n和每个数组元素,当n比某个数组元素小的时候,则可确定n应插入到当前元素的前一个位置。
评分标准:
程序书写格式规范,变量命名规范(10分);
程序算法正确,编译通过(20分)
程序计算结果正确
提示:假设定义数组a并赋初始值,注意数组是升序数组,数组a的元素需要从小到大是。从键盘输入一个数n。首先需要确定n出入数组的位置下标。依次比较n和每个数组元素,当n比某个数组元素小的时候,则可确定n应插入到当前元素的前一个位置。
评分标准:
程序书写格式规范,变量命名规范(10分);
程序算法正确,编译通过(20分)
程序计算结果正确
int[] a = {-60,-41,-21,-2,-1,0,4,12,56,214};
Scanner input = new Scanner(System.in);
System.out.println("Please enter a number.");
int n = input.nextInt();
int[] b = new int[a.length+1];
for(int i=0;i<a.length;i++) {
if(n<-a[i]) {
b[i] = n;
System.arraycopy(a, 0, b, 0, i);
System.arraycopy(a, i, b, i+1, b.length-i-1);
break;
}
}
System.out.println(Arrays.toString(b));
}
int[] test = {0, 5, 16, 48, 62, 84};
int index = 0; // 记录插入时的下标
System.out.println("请输入任意整数:");
Scanner scan = new Scanner(System.in);
// 判断输入是否是整数
if (scan.hasNextInt()) {
// 将输入值转为整数
int num = scan.nextInt();
for (int j = 0; j < test.length - 1; j++) {
//1 找到要插入位置的下标
if (num < test[j]){
index= j;
break;
}
}
// 2 定义新数组
int[] newTest = new int[test.length + 1];
for (int i = 0; i < test.length; i++) {
newTest[i] = test[i];
}
//3 将后面的数据向后挪,处理index后面的数据
for(int i = newTest.length - 1; i > index; i--){
newTest[i]=newTest[i-1];
}
newTest[index] = num;
System.out.println(Arrays.toString(newTest));
}
}