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

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

相关推荐
NAGNIP35 分钟前
一文搞懂机器学习中的特征降维!
算法·面试
想摆烂的不会研究的研究生39 分钟前
每日八股——Redis(1)
数据库·经验分享·redis·后端·缓存
NAGNIP1 小时前
一文搞懂机器学习中的特征构造!
算法·面试
毕设源码-郭学长1 小时前
【开题答辩全过程】以 基于SpringBoot技术的美妆销售系统为例,包含答辩的问题和答案
java·spring boot·后端
Learn Beyond Limits1 小时前
解构语义:从词向量到神经分类|Decoding Semantics: Word Vectors and Neural Classification
人工智能·算法·机器学习·ai·分类·数据挖掘·nlp
追逐时光者2 小时前
精选 10 款 .NET 开源免费、功能强大的 Windows 效率软件
后端·.net
追逐时光者2 小时前
一款开源、免费的 WPF 自定义控件集
后端·.net
你怎么知道我是队长2 小时前
C语言---typedef
c语言·c++·算法
源心锁2 小时前
丧心病狂!在浏览器全天候记录用户行为排障
前端·架构
S***q3772 小时前
Spring Boot管理用户数据
java·spring boot·后端