插入排序的java实现

插入排序的基本原理:插入排序就像是打扑克一样,从右往左遍历,比较数据的大小,当数据小于遍历到的值,则替换(往已经排好序的数据中插入数据)。

插入排序的时间复杂度:O(n2)

插入排序的算法稳定性:不会改变相同元素的相对位置,算法是稳定的。

插入排序的java代码实现:

public class Insertion {

    public static void insertionSort(Comparable[] arr){

        for (int i = 1; i < arr.length; i++) {
            for(int j = i; j > 0; j--){
                // 倒叙比较
                if(!greater(arr[j], arr[j - 1])){
                    exch(j, j - 1, arr);
                }else {
                    break;
                }
            }
        }
    }

    public static boolean greater(Comparable a, Comparable b){
        return a.compareTo(b) > 0;
    }

    public static void exch(int i, int j, Comparable[] arr){
        Comparable temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        Integer[] arr = {1, 10, 4, 2, 3, 5, 6, 7, 9, 11, 23};
        Insertion.insertionSort(arr);
        System.out.println(Arrays.toString(arr));

    }
}

 

posted @ 2021-07-12 00:09  风缱云流  阅读(94)  评论(0编辑  收藏  举报