Java实现基本的排序算法——插入排序

基本思路:

保证0~0有序,然后0~1有序,0~2有序,0~i有序的过程

因为0~0肯定是有序的 所以外循环从1开始

比较条件:

前面还有没有数据 && 前面索引的值 > 后面索引的值

时间复杂度最差情况是bigO(n2)  最好情况是bigO(n)

public class InsertionSort {
    public static void insertionSort(int[] arr){
        if (arr == null || arr.length < 2) {
            return;
        }
        //0~0有序 0~1有序 0~2 有序 0~i有序
        for (int i = 1; i<arr.length; i++){
            for (int j = i-1; j >= 0 && arr[j] > arr[j+1]; j--){
                swap(arr,j,j+1);
            }
        }
    }
    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    public static void printArray(int[] arr) {
        if (arr == null) {
            return;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }

    public static void main(String[] args) {
        int[] arr = {4, 1, 9, 6, 3};
        insertionSort(arr);
        printArray(arr);
    }
}

posted @ 2020-07-02 22:51  硬盘红了  阅读(137)  评论(0编辑  收藏  举报