通义 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),原地排序
  • 稳定性:✅ 是稳定排序(相同值不会交换顺序)

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

相关推荐
砍材农夫4 分钟前
物联网实战|Spring Boot + Netty 搭建 MQTT 消息路由与流转层
java·spring boot·后端·物联网·spring
装不满的克莱因瓶4 分钟前
掌握语义分割经典模型 FCN——从像素分类到端到端分割的奠基之作
人工智能·python·深度学习·算法·机器学习·分类·数据挖掘
KaMeidebaby8 分钟前
卡梅德生物技术快报 | 噬菌体展示 12 肽文库在蛋白表位定位中的应用与实验数据
大数据·人工智能·架构·spark·新浪微博
学计算机的计算基9 分钟前
链表算法上篇:LeetCode 206/234/141/142/160/21 题解与易错点
java·笔记·算法·链表
这个DBA有点耶11 分钟前
国产数据库有哪些?2026年主流产品选型对比
数据库·程序人生·职场和发展·架构·程序员创富·改行学it
大白话_NOI13 分钟前
【洛谷 P2678】 [NOIP2015 提高组] 跳石头 超详细题解
c++·算法
xwz小王子16 分钟前
ICRA 2026深度观察:全栈闭环成标配,中国具身智能势力显著崛起
大数据·人工智能·算法
孬甭_17 分钟前
深入解析归并排序:稳定高效的分治典范
算法·排序算法
DXM052125 分钟前
第14期|高阶分割模型:Transformer/SegFormer遥感应用
人工智能·python·神经网络·算法·计算机视觉·cnn·ageo
swordbob30 分钟前
CAP 定理:为什么不能同时实现 C、A、P?
开发语言·后端·spring