排序算法 - 插入(Insertion Sort)
插入排序
插入排序 (Insertion Sort) 是通过将未排序元素插入已排序序列合适位置的排序算法。因排序过程是通过插入的方式实现,所以被称为 插入排序。
1、算法描述
\(n\) 个记录 \((0\cdots n)\) 升序排列:
- 从未被排序的第 1 个元素 \(i\) 开始,数组第 1 个元素认为已被排序;
- 从已排序元素末尾开始向前扫描,依次与 \(i\) 对比;
- 若该元素大于 \(i\),将该元素后移 1 位;
- 重复步骤
3.,直到已排序元素中大于 \(i\) 的元素都已后移; - 将元素 \(i\) 插入空出来的位置;
- 重复上述步骤。
2、Gif 演示

3、代码实现
- Golang
package sort
func InsertionInt(arr []int, desc bool) []int {
// 开始插入排序:
for i := 1; i < len(arr); i++ {
key := arr[i]
j := i - 1
// 将比 key 大/小的元素往后移一位
for j >= 0 && (!desc && arr[j] > key || desc && arr[j] < key) {
arr[j+1] = arr[j]
j--
}
// 将 key 插入腾出来的空位
arr[j+1] = key
}
return arr
}

浙公网安备 33010602011771号