有关Go语言的一些排序算法 | 青训营笔记

78 阅读2分钟

Go语言是一种高效的编程语言,它内置了许多常用的算法和数据结构。排序算法是计算机科学中的基本操作之一,对于程序员来说,掌握常见的排序算法至关重要。Go语言总共有三种常见的排序算法:冒泡排序、插入排序和快速排序,并提供相应的代码实现。

1. 冒泡排序

冒泡排序是一种简单直观的排序算法,它的基本思想是依次比较相邻的元素,将较大的元素交换到后面,最终达到排序的目的。 下面是冒泡排序的Go语言实现:

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]
            }
        }
    }
}

2. 插入排序

插入排序也是一种简单的排序算法,它的基本思想是将一个元素插入到已经排好序的数组中的合适位置,从而得到新的有序数组。 下面是插入排序的Go语言实现:

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
    }
}

3. 快速排序

快速排序是一种高效的排序算法,它的基本思想是选取一个元素作为枢轴,将数组分成两个部分,其中一部分的所有元素都小于枢轴,另一部分的所有元素都大于枢轴,然后对这两部分分别进行递归排序。 下面是快速排序的Go语言实现:

func quickSort(arr []int, left, right int) {
    if left < right {
        pivot := partition(arr, left, right)
        quickSort(arr, left, pivot-1)
        quickSort(arr, pivot+1, right)
    }
}
func partition(arr []int, left, right int) int {
    pivot := arr[right]
    i := left - 1
    for j := left; j < right; j++ {
        if arr[j] <= pivot {
            i++
            arr[i], arr[j] = arr[j], arr[i]
        }
    }
    arr[i+1], arr[right] = arr[right], arr[i+1]
    return i + 1
}

以上就是三种常见的排序算法在Go语言中的实现。