排序算法之插入排序(Java)

思路:先假定第0位为原数组,然后后面的每一位都是插入的数。

就好比斗地主的牌,先起一张牌,后面的每一张牌都要和前面的牌进行比较,

然后按照顺序排列起来。

所以需要从第二个数字开始作为循环的起点,然后 i 就是 1~length 的长度

然后让 j=i-1,第0位就是 j ,第 i 位变成了 j+1 位置

然后从j位(也就是第0位)开始跟后面的进行比较,如果后面的数值更小就和它交换。

public class 插入排序 {
    public static void insertionSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
        //从第2个数字开始循环
        for (int i = 1; i < arr.length; i++) {
            //后面的与前面的对比,后来的小于前面的就交换,一直到无法交换
            for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
posted @ 2021-03-31 22:52  小安不菜  阅读(152)  评论(0)    收藏  举报