其他分享
首页 > 其他分享> > 11.19下标越界问题,冒泡排序问题

11.19下标越界问题,冒泡排序问题

作者:互联网

问题:在指定数组arr={99,88,77,66,55}中插入一个数字并使之保持降序。并取出相应的下标,最后输出整个数组的所有值

2021-11-1911:50:42

 

1,创建了一个新的数组arr2,原基础上容量+1

1 int[] arr = {99,85,82,63,60};
2         int[] arr2 = new int[arr.length+1];
3         Scanner sc = new Scanner(System.in);
4         System.out.println("请输入新增成绩:");
5         int num = sc.nextInt();

2,将原数组的值赋给新数组

循环的次数i不能超过数组的下标大小,否则会发生下标越界问题

(在这里一直报错,我修改了i的循环条件解决了这个问题)

for (int i = 0; i < arr.length; i++) {
            arr2[i] = arr[i];
        }
        arr2[arr2.length-1] = num;
        arr = arr2;
        int num1 = 0;

3,冒泡排序

这里使用了冒泡排序,for循环里面又增加了一个内循环

(这里的逻辑我思考了很久,就好比大小两个机械运作齿轮,带动运转)

内循环用来循环数组内的大小比较

外循环用来循环次数

两层循环下使数组进行升序或者降序的排列

for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length-1; j++) {
                if (arr[j] < arr[j+1]) {
                    num1 = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = num1;
                }
            }
        }

4,取出数组下标

这里没有碰到什么问题,一个循环取出相应的下标就可以了

最后输出相应的需求

for (int i = 0; i < arr.length; i++) {
            if (num == arr[i]) {
                System.out.println("插入成绩的下标是:"+i);
            }
        }
        System.out.println("插入后的成绩信息是:");
        System.out.println(Arrays.toString(arr));

标签:arr,下标,11.19,int,冒泡排序,length,arr2,数组
来源: https://www.cnblogs.com/fang0317/p/15576515.html