Java之Algorithm_analysis案例詳解

/*
冒泡排序:雙層循環
1.外層循環:控制排序輪數,排序數組長度減1(最後一次循環隻剩下一個元素,不需要比較,同時數組已完成排序。
 
2.內層循環:比較數組臨近元素大小,確定是否交換位置,對比和交換次數隨排序輪數而減少。
 */
public class BubbleSort {
    public void sort(int[] array){
        for(int i=1;i<array.length;i++){//控制輪數
            //比較相鄰兩個元素,較大的數往後冒泡
            for(int j=0;j<array.length-i;j++){//控制交換次數
                if(array[j]>array[j+1]){//第一個數大於第二個數,進行交換
                    int temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                    System.out.println("第-------"+j+"-------次");
                }
                System.out.println("第"+i+"輪");
                showArray(array);
            }
        }
        showArray(array);
    }
    /*
    顯示數組
     */
    public void showArray(int[] array){
        for(int i:array){//遍歷數組
            System.out.print("  》"+i);
        }
        System.out.println();
    }
    public static void  main(String[] args) {
        //創建一個數組,這個數組元素是亂序的
        int[] array = {63,4,24,1,3,15};
        System.out.println("數組長度:"+array.length);
        System.out.println("=========================");
        //創建冒泡排序類對象
        BubbleSort sorter = new BubbleSort();
        //調用排序方法將數組排序
        sorter.sort(array);
    }

顯示結果

數組長度:6
=========================
第——-0——-次
第1輪
》4  》63  》24  》1  》3  》15
第——-1——-次
第1輪
》4  》24  》63  》1  》3  》15
第——-2——-次
第1輪
》4  》24  》1  》63  》3  》15
第——-3——-次
第1輪
》4  》24  》1  》3  》63  》15
第——-4——-次
第1輪
》4  》24  》1  》3  》15  》63
第2輪
》4  》24  》1  》3  》15  》63
第——-1——-次
第2輪
》4  》1  》24  》3  》15  》63
第——-2——-次
第2輪
》4  》1  》3  》24  》15  》63
第——-3——-次
第2輪
》4  》1  》3  》15  》24  》63
第——-0——-次
第3輪
》1  》4  》3  》15  》24  》63
第——-1——-次
第3輪
》1  》3  》4  》15  》24  》63
第3輪
》1  》3  》4  》15  》24  》63
第4輪
》1  》3  》4  》15  》24  》63
第4輪
》1  》3  》4  》15  》24  》63
第5輪
》1  》3  》4  》15  》24  》63
》1  》3  》4  》15  》24  》63

/*直接選擇排序:指定排序位置與其他元素比較。交換次數減少。*/

public class SelectSort {
    public void sort(int[] array) {
        int index;
        for (int i = 1; i < array.length; i++) {
            index = 0;
            for (int j = 1; j <= array.length - i; j++)
                if (array[j] > array[index]) {
                    index = j;
                }
            //交換位置array.length-i和index(最大值)上的兩個數
            int temp = array[array.length-i];
            array[array.length - i] = array[index];
            array[index] = temp;
        }
        showArray(array);
    }
    /*
    顯示數組
     */
    public void showArray(int[] array) {
        for (int i : array) {//遍歷數組
            System.out.print("  》" + i);
        }
        System.out.println();
    }
    public static void main(String[] args) {
        //創建一個數組,這個數組元素是亂序的
        int[] array = {63, 4, 24, 1, 3, 15};
        System.out.println("數組長度:" + array.length);
        System.out.println("=========================");
        //創建冒泡排序類對象
        SelectSort sorter = new SelectSort();
        //調用排序方法將數組排序
        sorter.sort(array);
    }
}

運行結果:

數組長度:6
=========================
》1  》3  》4  》15  》24  》63

到此這篇關於Java之Algorithm_analysis案例詳解的文章就介紹到這瞭,更多相關Java之Algorithm_analysis內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: