简介
Insertion Sort 和打扑克牌时,从牌桌上逐一拿起扑克牌,在手上排序的过程相同。
举例:
Input: {5 2 4 6 1 3}。
首先拿起第一张牌, 手上有 {5}。
拿起第二张牌 2, 把 2 insert 到手上的牌 {5}, 得到 {2 5}。
拿起第三张牌 4, 把 4 insert 到手上的牌 {2 5}, 得到 {2 4 5}。
以此类推。
算法
- 从第一个元素开始,该元素可以认为已经被排序
- 取出下一个元素,在已经排序的元素序列中从后向前扫描
- 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置后
- 重复步骤2~5
示意图

例子
使用go实现
func insertionSort(arr []int) []int {
for i := 1; i < len(arr); i++ {
item := arr[i]
j := i - 1
for ; j >= 0 && (arr[j] > item); j-- {
arr[j+1] = arr[j]
}
arr[j+1] = item
}
return arr
}
本文通过类比打扑克牌的场景,详细介绍了插入排序算法的工作原理。从首个元素开始,逐一比较并插入新元素到已排序序列的正确位置,通过具体实例展示了排序过程。使用Go语言实现了插入排序算法。
377

被折叠的 条评论
为什么被折叠?



