插入排序是一种简单的排序算法,它的思想是将待排序序列分成已排序和未排序两部分,每次从未排序部分中取出一个元素,在已排序部分中找到合适的位置插入该元素,直到所有元素都被插入完毕。
以下是 golang 实现插入排序的示例代码:
func InsertionSort(arr []int) {
n := len(arr)
for i := 1; i < n; i++ {
// 将 arr[i] 插入到有序数列 arr[0:i-1] 中
j, temp := i, arr[i]
for ; j > 0 && temp < arr[j-1]; j-- {
arr[j] = arr[j-1]
}
arr[j] = temp
}
}
在该代码中,我们使用了一个指针变量 j
来遍历已排好序的部分,并且将要插入的元素存储在临时变量 temp
中。
对于每个要插入的元素 arr[i]
,我们都会将其与有序数列中最后一个元素开始比较。如果当前值小于有序数列中某个值,则将这个值向右移动一位。重复上述过程直至找到要插入位置,并在该位置处将 temp
插入。
时间复杂度:\(O(n^2)\)
空间复杂度:\(O(1)\)
稳定性:稳定