携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
插入排序
插入排序是将遍历到的值从后向前扫描,找到插入位置并将大于要插入的数据的值后移
1.1 算法描述
- 记录当前要插入的数据和指针
- 回溯找到插入位置并将大于要插入的数据的值后移
- 重复直到排序成功
1.2 演示
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)