【474、常见排序算法】

63 阅读4分钟

常见的排序算法有多种,下面简要介绍几种常用的排序算法及其特点。

  1. 冒泡排序(Bubble Sort)

冒泡排序是一种简单的排序算法,它的基本思想是依次比较相邻的元素,如果前面的元素大于后面的元素,则交换它们的位置,直到序列中所有元素都有序为止。

时间复杂度:O(n^2)

空间复杂度:O(1)

稳定性:稳定排序

  1. 插入排序(Insertion Sort)

插入排序是一种简单直观的排序算法,它的基本思想是将待排序序列分为两部分,已排序部分和未排序部分。从未排序部分依次取出一个元素,插入到已排序部分中的合适位置。

时间复杂度:O(n^2)

空间复杂度:O(1)

稳定性:稳定排序

  1. 选择排序(Selection Sort)

选择排序是一种简单直观的排序算法,它的基本思想是从待排序序列中选择最小的元素,将其放到序列的起始位置,然后再从剩余的未排序元素中选择最小的元素,放到已排序序列的末尾,以此类推,直到序列中所有元素都有序为止。

时间复杂度:O(n^2)

空间复杂度:O(1)

稳定性:不稳定排序

  1. 快速排序(Quick Sort)

快速排序是一种高效的排序算法,它的基本思想是通过一趟排序将待排序序列分割成两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再按照同样的方式对这两部分分别进行快速排序,直到序列中所有元素都有序为止。

时间复杂度:O(nlogn)

空间复杂度:O(logn)

稳定性:不稳定排序

  1. 归并排序(Merge Sort)

归并排序是一种稳定的排序算法,它的基本思想是将待排序序列分为若干个子序列,对每个子序列进行归并排序,最后将所有子序列合并成一个有序序列。

时间复杂度:O(nlogn)

空间复杂度:O(n)

稳定性:稳定排序

  1. 堆排序(Heap Sort)

堆排序是一种选择排序,它的基本思想是将待排序序列构建成一个大根堆或小根堆,然后依次将堆顶元素取出并重新调整堆,直到序列中所有元素都有序为止。

时间复杂度:O(nlogn)

空间复杂度:O(1)

稳定性:不稳定排序 7. 希尔排序(Shell Sort)

希尔排序是插入排序的一种改进算法,它的基本思想是将待排序序列按照一定步长分组,对每组进行插入排序,然后逐步缩小步长,最终将所有元素插入排序,直到序列中所有元素都有序为止。

时间复杂度:O(nlogn) ~ O(n^2)

空间复杂度:O(1)

稳定性:不稳定排序

  1. 计数排序(Counting Sort)

计数排序是一种非比较排序,它的基本思想是统计序列中每个元素出现的次数,然后根据统计结果将序列中的元素排列成有序序列。

时间复杂度:O(n+k)

空间复杂度:O(k)

稳定性:稳定排序

  1. 桶排序(Bucket Sort)

桶排序是一种非比较排序,它的基本思想是将待排序序列分到不同的桶中,每个桶内再分别进行排序,最后将各个桶中的元素依次排列成有序序列。

时间复杂度:O(n+k)

空间复杂度:O(n+k)

稳定性:稳定排序

  1. 基数排序(Radix Sort)

基数排序是一种非比较排序,它的基本思想是将待排序序列按照位数划分成不同的数字,然后依次按照每个数字进行排序,直到所有位数都排序完成。

时间复杂度:O(d(n+r))

空间复杂度:O(n+r)

稳定性:稳定排序

以上是几种常见的排序算法及其特点,不同的排序算法在不同的场景下具有不同的优势和劣势,根据具体情况选择合适的排序算法能够提高排序效率。