數據結構學習(七):冒泡排序

一、初始代碼

int arr[] = {3,9,-1,10,-2};

        //第一趟排序,將最大的數排在最後
        int temp = 0;
       
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length -1 - i; j++) {
                //如果前面的數比後面的數大,則交換
                if(arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }

            System.out.println("第"+ (i + 1) +"趟排序後的數組:");
            System.out.println(Arrays.toString(arr));
        }

二、優化

 //第一趟排序,將最大的數排在最後
        int temp = 0;
        //標識變量,表示是否進行過交換
        boolean flag = false;

        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length -1 - i; j++) {
                //如果前面的數比後面的數大,則交換
                if(arr[j] > arr[j + 1]) {
                    flag = true;
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }

            System.out.println("第"+ (i + 1) +"趟排序後的數組:");
            System.out.println(Arrays.toString(arr));

            //在一趟排序中,一次交換都沒有發生
            if(!flag) {
                break;
            }else {
                //重置flag,進行下次判斷
                flag = false;
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章