1. 程式人生 > 其它 >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));