插入排序
算法概述
插入排序的基本思想是将数组分为已排序和未排序两部分,每次从未排序部分取出一个元素,插入到已排序部分的适当位置。对于小规模数据和基本有序的数据,插入排序是一个高效的排序算法。
算法实现
func InsertSort(arr []int) {
n := len(arr)
// 把数组的第一元素视为已排序的序列
// 从第二个元素开始遍历未排序的部分
for i := 1; i < n; i++ {
// 保存待排序的元素
temp := arr[i]
// 保存已排序的序列的最后一个元素的下标
j := i - 1
// 待排序的元素从已排序序列的最后一个元素开始,依次向前比较
for j >= 0 && temp < arr[j] {
// 已经排序的元素向后移动,为待排序的元素腾出位置
arr[j+1] = arr[j]
j--
}
// 把待排序的元素插入到已排序序列合适的位置
arr[j+1] = temp
}
}