Insertion

package demo.sort;

import java.util.Arrays;

/**
 * 插入排序: 待排序和已排序兩組
 */
public class Insertion {

    /**
     * 數組元素排序:  小元素在左邊, 大元素在右邊
     * @param arr
     */
    public static void sort(Comparable[] arr){
        for(int i = 1; i < arr.length; i++){
            for(int j = i; j > 0; j--){
                if(greater(arr[j-1],arr[j])){
                    exch(arr, j-1, j);
                }else {
                    break;
                }
            }
        }
    }

    /**
     * a.greater(b)
     * a>b 返回true
     * @param a 實現Comparable接口的類對象
     * @param b 實現Comparable接口的類對象
     * @return
     */
    public static boolean greater(Comparable a, Comparable b){
        return a.compareTo(b) > 0;
    }

    /**
     * 交換數組元素: 索引i和索引j的值互換
     * @param arr
     * @param i
     * @param j
     */
    public static void exch(Comparable[] arr, int i, int j){
        Comparable temp;
        temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        Integer[] arr = {6,5,4,3,2,1};
        sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

 

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