插入排序

孤街醉人 提交于 2020-03-20 23:54:08

3 月,跳不动了?>>>

1、思想

    将数组元素想象成玩扑克时拿牌顺序,首先当有一个元素,没啥处理;然后第二个元素,和第一个比较,找到适合的位置插入;然后第三个元素找到适合位置,原本在该位置以后的所有元素往后移一位,再插入。循环反复,形成有序序列。

2、时间复杂度

    最好 O(n) ,最坏 O(n^2) ,平均O(n^2)。

3、代码实现

public class InsertSort {
    public static void insertSort(int[] arr){
        if(arr.length == 0 || arr == null) return ;

        int n = arr.length;
        for(int i=1;i<n;i++){
            int temp = arr[i];
            int move = i-1;
            while(move >=0 && arr[move] >temp){
                arr[move+1] = arr[move];
                move--;
            }
            arr[move+1] = temp;
        }
    }

    public static void main(String[] args){
        int[] arr = {50,10,90,30,70,40,80,60,20};
        insertSort(arr);
        for (int array : arr) {
            System.out.print(array+" ");
        }
    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!