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));
    }
}

 

你可能感兴趣的:(插入排序)