java數組——冒泡排序法與其優化

冒泡排序的基本算法

public class TestBubble {
    public static void main(String[] args) {
        int [] arr = {45,25,78,99,13,55,65,15};
        int temp;
        for(int i=0;i<arr.length-1;i++) { //這個循環代表比較幾輪
            for(int j=0;j<arr.length-1;j++) {    //這個循環代表元素的兩兩對比
                if(arr[j]>arr[j+1]) {
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

 

冒泡排序的優化算法

public class TestBubble2 {
    public static void main(String[] args) {
        //int [] arr = {45,25,78,99,13,55,65,15};
        int [] arr = {1,2,3,4,5};
        int temp;
        
        boolean flag;
        int count=0;
        
        for(int i=0;i<arr.length-1;i++) {
            flag=true;//優化2   默認有序
            count++; //優化3  統計比較的論數
            for(int j=0;j<arr.length-1-i;j++) { //優化1 無需每輪都比7次
                if(arr[j]>arr[j+1]) {
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                    flag=false;//數組中的元素無序,發生了交換
                }
            }
            if(flag) {
                break; //退出循環,證明數組有序
            }
        }
        System.out.println(Arrays.toString(arr));
        System.out.println("一共比較了"+count+"輪");
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章