排序算法

64 阅读3分钟
  1. 冒泡排序(Bubble Sort)
```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]
            }
        }
    }
}
  1. 选择排序(Selection Sort)
```func selectionSort(arr []int) {
    n := len(arr)
    for i := 0; i < n-1; i++ {
        min := i
        for j := i + 1; j < n; j++ {
            if arr[j] < arr[min] {
                min = j
            }
        }
        arr[i], arr[min] = arr[min], arr[i]
    }
}
  1. 插入排序(Insertion Sort)
```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 = j - 1
        }
        arr[j+1] = key
    }
}
4.  快速排序(Quick Sort)


```js
```func quickSort(arr []int, low, high int) {
    if low < high {
        pivot := partition(arr, low, high)
        quickSort(arr, low, pivot-1)
        quickSort(arr, pivot+1, high)
    }
}

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

本次学习中,我了解了几种常见的排序算法以及其Go语言实现。这些算法包括冒泡排序、选择排序、插入排序和快速排序。这些算法的实现方法各不相同,但都是为了让我们更有效地处理数据,排序数据。

首先,冒泡排序是最简单的排序算法。它以交换相邻的元素为基础,在n次循环中,每次将最大(或最小)的元素移到数组的末尾,因此需要n-1次循环,每次循环需要比较n-i-1次。尽管冒泡排序算法容易实现,但在处理大型数据集时,其性能会变得很糟糕。

另外一种算法是选择排序。从未排序的元素中找到最小元素,并把它放在数组的开始处,一次类推,每次找到一个最小元素。选择排序是一个不错的,但性能最佳排序算法中并不被广泛使用。

插入排序是另一种常见的排序算法,它通过将未排序的元素插入到已排序的子数组中来排序数组。它的核心思想是将数组分成两个部分:已排序和未排序。只要未被排序的元素大于已排序的元素,我们就向右移动元素。最终,未排序的元素插入排好序的子数组中。

快速排序是一种高效的排序算法,也许是最常用的排序算法之一。它基于“分治”策略。我们选择一个基准元素,然后将小于基准元素的元素移到基准元素的左侧,将大于基准元素的元素移到右侧。在每个部分中,我们继续递归调用排序,直到只有一个元素为止。

总而言之,这些排序算法都是基础的算法,我们可以用其中的任意一种排序算法解决大多数排序问题。当处理数据集较小的时候,我们可以使用冒泡排序、选择排序或插入排序。当处理大量数据时,我们应该使用更快的算法,例如快速排序等。因此,在进行排序算法的选择时,应该考虑到数据集的规模和复杂性,以确定最佳的排序策略。