Golang实现经典排序算法解析

排序算法(Golang实现)

排序算法是计算机科学中的基础内容,高效的排序算法能显著提升程序性能。Golang作为一门现代编程语言,提供了丰富的标准库支持,但理解底层排序算法的实现仍具有重要意义。以下介绍几种常见的排序算法及其Golang实现。

冒泡排序

冒泡排序通过重复遍历待排序列表,比较相邻元素并交换位置,将最大元素逐步“冒泡”到末尾。时间复杂度为O(n2),适合小规模数据排序。

func BubbleSort(arr []int) {
    n := len(arr)
    for i := 0; i < n-1; i++ {
        for j := 0; j < n-i-1; j++ {
            if arr[j] > arr[j+1] {
                arr[j], arr[j+1] = arr[j+1], arr[j]
            }
        }
    }
}
选择排序

选择排序每次从未排序部分选择最小元素,放到已排序部分的末尾。时间复杂度同样为O(n2),但交换次数少于冒泡排序。

func SelectionSort(arr []int) {
    n := len(arr)
    for i := 0; i < n-1; i++ {
        minIdx := i
        for j := i + 1; j < n; j++ {
            if arr[j] < arr[minIdx] {
                minIdx = j
            }
        }
        arr[i], arr[minIdx] = arr[minIdx], arr[i]
    }
}
插入排序

插入排序将未排序元素逐个插入到已排序部分的正确位置。对于近乎有序的数据,插入排序效率较高,时间复杂度为O(n2)。

func InsertionSort(arr []int) {
    n := len(arr)
    for i := 1; i < n; i++ {
        key := arr[i]
        j := i - 1
        for j >= 0 && arr[j] > key {
            arr[j+1] = arr[j]
            j--
        }
        arr[j+1] = key
    }
}
快速排序

快速排序采用分治策略,选择一个基准元素将数组分为两部分,递归排序。平均时间复杂度为O(n log n),是实际应用中最快的排序算法之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值