java数组的小练习
题目要求:在一个降序排列的数组中插入一个新的元素,使插入后的数组还是降序排列
整体思路比较复杂 分的比较细 用于理解数组,当然实际做项目还是直接使用函数方便
import java.util.Scanner;
public class Work_chengji2 {
public static void main(String[] args) {
// 有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序
int[] nums = { 99, 85, 82, 63, 60 };
Scanner input = new Scanner(System.in);
System.out.println("请输入学生成绩:");
// 输入加入的成绩
int score = input.nextInt();
// 重建一个数组,长度加一
int[] nums2 = new int[nums.length + 1];
// 赋值数据给数组
for (int j = 0; j < nums.length; j++) {
nums2[j] = nums[j];
}
// 输出加一后的数组
for (int i = 0; i <= nums2.length - 1; i++) {
System.out.print(nums2[i] + " ");
}
// 换行
System.out.println();
// 定义index为输入成绩要插入的位置;初始值先放在最后
int index = nums2.length - 1;
// 在数组里从头开始与输入成绩进行对比
for (int i = 0; i <= nums2.length - 1; i++) {
// 当对比数据小于输入成绩时,次数据的位置为输入数据要插入的数据
// 即:i为index的位置
if (nums2[i] < score) {
index = i;
break;
}
}
// 把数据要插入的位置腾出来
for (int b = nums2.length - 1; b > index; b--) {
// 从后往前依次换位子,直到index的位置
nums2[b] = nums2[b - 1];
}
// 赋值
nums2[index] = score;
// 遍历最后数组
for(int i:nums2){
System.out.print(i + " ");
}
}
}