简介
我们定义了一个名为 insertionSort 的函数,该函数使用传入的整数切片对其进行排序。在该函数中,我们通过遍历数组中的每个元素,将其插入到已排序序列的正确位置来实现插入排序。具体来说,我们从索引 1 开始遍历数组,每次选择一个元素,并将其与已排序序列进行比较。如果已排序序列中的元素大于当前元素,则我们将已排序序列中的元素向右移动,以便为当前元素腾出空间。最后,我们将当前元素插入到正确的位置,以此扩大已排序序列的范围。
在 main 函数中,我们定义了一个未排序的整数切片,并将其传递给 insertionSort 函数进行排序。然后我们输出排序后的结果。
package main
import "fmt"
// 插入排序函数
func insertionSort(arr []int) {
// 遍历数组中的每个元素
for i := 1; i < len(arr); i++ {
// 选择当前元素作为关键字
key := arr[i]
// 将 j 初始化为当前元素的前一个位置
j := i - 1
// 将已排序序列中比关键字大的元素向右移动
for j >= 0 && arr[j] > key {
arr[j+1] = arr[j]
j = j - 1
}
// 将关键字插入到正确的位置
arr[j+1] = key
}
}
func main() {
// 定义一个未排序的整数切片
arr := []int{9, 5, 1, 4, 3, 6, 8, 2, 7}
// 输出未排序的数组
fmt.Println("未排序的数组: ", arr)
// 使用插入排序对数组进行排序
insertionSort(arr)
// 输出排序后的结果
fmt.Println("排序后的数组: ", arr)
}