排序算法之插入排序

109 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

插入排序

插入排序是将遍历到的值从后向前扫描,找到插入位置并将大于要插入的数据的值后移

1.1 算法描述

  • 记录当前要插入的数据和指针
  • 回溯找到插入位置并将大于要插入的数据的值后移
  • 重复直到排序成功

1.2 演示

插入排序.png

1.3 代码实现

public void insertionSort(int[] nums) {

    for (int i = 1; i < nums.length; i++) {
        // 记录当前要插入的数据
        int temp = nums[i];
        // 指针
        int cur = i - 1;
        while (cur >= 0 && nums[cur] >= temp) {
            // 所有大于要插入的数据后移
            nums[cur + 1] = nums[cur];
            cur--;
        }
        // 插入
        nums[cur + 1] = temp;
    }
}

1.4 总结

关键点在于从后向前回溯,时间复杂度O(n^2),空间复杂度O(1)