golang实现插入排序算法

简介

我们定义了一个名为 insertionSort 的函数,该函数使用传入的整数切片对其进行排序。在该函数中,我们通过遍历数组中的每个元素,将其插入到已排序序列的正确位置来实现插入排序。具体来说,我们从索引 1 开始遍历数组,每次选择一个元素,并将其与已排序序列进行比较。如果已排序序列中的元素大于当前元素,则我们将已排序序列中的元素向右移动,以便为当前元素腾出空间。最后,我们将当前元素插入到正确的位置,以此扩大已排序序列的范围。

golang实现插入排序算法

在 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)
}

版权声明:如无特殊标注,文章均来自网络,本站编辑整理,转载时请以链接形式注明文章出处,请自行分辨。

本文链接:https://www.shbk5.com/dnsj/72017.html