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

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

相关推荐
励志不掉头发的内向程序员1 分钟前
鼠标点一下,图形是怎么画出来的?拆解 CAD 的 Action 状态机
后端·架构
高晶8 分钟前
Android 机器视觉新手入门:从扫码到人脸实战
后端·程序员
写码跑山的老艾9 分钟前
基于 FSB 快速搭建 AI 客服:专家扩展与 Spring Boot 接入
后端
咖啡无伴侣14 分钟前
1. 别再手动改代码格式了!Vue3 项目工程化规范搭建实战
vue.js·架构
云边有个稻草人14 分钟前
从语句编写到执行追踪:金仓 SQL 编辑器实战指南
后端
信奥卷王16 分钟前
[GESP202609 六级] 数组划分
数据结构·算法
code_slave(码畜)19 分钟前
微服务架构落地:消息队列架构设计(上篇)——异步解耦、削峰填谷,看懂业务事件流转本质
spring boot·spring cloud·微服务·云原生·架构
用户2049375549520 分钟前
中文流式识别偶发重复词的定位与修复实践
后端
牧羊人.33344 分钟前
动手学深度学习 07|Resnet网络与迁移学习
网络·人工智能·深度学习·神经网络·算法·cnn·迁移学习
小蒜学长1 小时前
基于Java的公司采购系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·公司采购系统