public static void main(String[] args) { /* * 有一组学员的成绩{99,85,82,63,60},它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序 * *向一个已经排序好的数组中插入一个数据的思想: * 1)新建一个长度比原来数组长度大1的新数组 * 2)将原来数组中的元素按照对应下标的关系存储到新的数组中 * 3)获取你要插入的值,通过Scanner对象来实现 * 4)获取插入元素要插入的位置(下标):通过循环的方式,将你要插入的元素与数组的元素值比较,一旦插入值比数组的某个值大,这个值的位置就是要插入的位置,后续就不需要再比较了 * 5)移动元素:从插入位置开始的元素以及之后的元素依次往后移动一位,注意:从倒数第二个元素开始往后移动 * 6)将要插入的元素赋值到插入位置处 * * */ Scanner scanner = new Scanner(System.in); int[] scores = {99,85,82,63,60}; //1):新建一个长度比原来数组长度大1的新数组 int[] newScores = new int[scores.length+1]; //2)将原来数组中的元素按照对应下标的关系存储到新的数组中 for(int i =0;i< scores.length;i++){ newScores[i]=scores[i]; } //新数组元素:99 85 82 63 60 0 //遍历输出新数组中的所有元素 for(int a :newScores){ System.out.print(a+" "); } System.out.println(); //3)获取你要插入的值,通过Scanner对象来实现 System.out.println("请输入你要插入的值:"); int insertNum = scanner.nextInt(); //4)获取插入元素要插入的位置(下标) //假设插入元素要插入的位置是数组最后一个位置(数组最后一个元素是默认值,不是我们赋予的值),下标为newScores.length-1 int index = newScores.length-1; for(int i =0;i<newScores.length;i++){ //比较要入的元素与数组中的元素 if(insertNum>newScores[i]){ index=i; break;//一旦得到插入元素比数组某个元素大,就结束循环后续所有操作,不再比较 } } System.out.println("插入元素要插入的位置:"+index); // 5)移动元素:从插入位置开始的元素以及之后的元素依次往后移动一位,注意:从倒数第二个元素开始往后移动,否则从插入位置开始移动的话,原位置数据会被覆盖掉 for(int i =newScores.length-1;i>index;i--){ newScores[i]=newScores[i-1]; } System.out.println("------------------------"); //6)将要插入的元素赋值到插入位置处 newScores[index]=insertNum; //遍历输出新数组中的所有元素 for(int a :newScores){ System.out.print(a+" "); } System.out.println(); }
有一组学员的成绩{99,85,82,63,60},它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序
最新推荐文章于 2024-07-22 14:15:06 发布