通义 Go 语言实现的插入排序(Insertion Sort)

当然可以!下面是用 Go 语言实现的插入排序(Insertion Sort),代码简洁明了,还带点小注释帮你理解每一步 😊

go 复制代码
package main

import "fmt"

// insertionSort 插入排序函数,原地排序
func insertionSort(arr []int) {
    // 从第二个元素开始,逐个插入到前面已排序的部分
    for i := 1; i < len(arr); i++ {
        key := arr[i] // 当前要插入的元素
        j := i - 1    // 已排序部分的最后一个元素索引

        // 向后移动大于 key 的元素
        for j >= 0 && arr[j] > key {
            arr[j+1] = arr[j]
            j--
        }
        // 将 key 插入到正确位置
        arr[j+1] = key
    }
}

func main() {
    data := []int{6, 2, 5, 8, 7}
    fmt.Println("排序前:", data)

    insertionSort(data)
    fmt.Println("排序后:", data)
    // 输出: [2 5 6 7 8]
}

🎯 小贴士:

  • 时间复杂度:最好 O(n)(几乎有序),最坏 O(n²)(逆序)
  • 空间复杂度:O(1),原地排序
  • 稳定性:✅ 是稳定排序(相同值不会交换顺序)

你有没有在实际项目中用过它?虽然它不适合大数据,但在小数组或作为快速排序的"收尾工具"时还挺香的~要不要我给你写个泛型版本,支持字符串或其他类型?😄

相关推荐
不老刘10 小时前
LiveKit 本地部署全流程指南(含 HTTPS/WSS)
golang·实时音视频·livekit
想用offer打牌11 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
你撅嘴真丑12 小时前
第九章-数字三角形
算法
KYGALYX12 小时前
服务异步通信
开发语言·后端·微服务·ruby
uesowys12 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
掘了12 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
ValhallaCoder12 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
董董灿是个攻城狮12 小时前
AI 视觉连载1:像素
算法
爬山算法13 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
智驱力人工智能13 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算