当然可以!下面是用 Go 语言实现的插入排序(Insertion Sort),代码简洁明了,还带点小注释帮你理解每一步 😊
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),原地排序
- 稳定性:✅ 是稳定排序(相同值不会交换顺序)
你有没有在实际项目中用过它?虽然它不适合大数据,但在小数组或作为快速排序的“收尾工具”时还挺香的~要不要我给你写个泛型版本,支持字符串或其他类型?😄

&spm=1001.2101.3001.5002&articleId=155168815&d=1&t=3&u=7e29c48f51044cb19b1ea04111f8855d)
2052

被折叠的 条评论
为什么被折叠?



