排序的总结

简介: 排序的总结

1. 冒泡排序 (Bubble Sort)

  • 基本思想:依次比较相邻的两个元素,如果顺序错误就交换它们,一轮比较可以确保最大元素沉底。
  • 特点:简单易懂,但对大规模数据排序效率较低(时间复杂度 O(n^2))。

2. 选择排序 (Selection Sort)

  • 基本思想:每次从未排序的数据中选择最小(或最大)的元素放到已排序部分的末尾。
  • 特点:简单,但效率也较低(时间复杂度 O(n^2)),不适用于大规模数据。

3. 插入排序 (Insertion Sort)

  • 基本思想:类似于整理扑克牌,每次将一个待排序的元素插入到已排序数组的合适位置。
  • 特点:对于小规模数据或基本有序的数据效率较高,但在大规模数据上性能一般(时间复杂度 O(n^2))。

4. 归并排序 (Merge Sort)

  • 基本思想:采用分治法,将原始数组划分为较小的数组,排序后再合并成一个大的有序数组。
  • 特点:稳定且效率较高(时间复杂度 O(n log n)),但需要额外的空间来存储中间结果。

5. 快速排序 (Quick Sort)

  • 基本思想:选择一个基准值,将数组分成两部分,小于基准值的元素放在左边,大于基准值的元素放在右边,然后递归地对两部分进行排序。
  • 特点:高效的排序算法之一,平均时间复杂度为 O(n log n),但最坏情况下可能达到 O(n^2)。

6. 堆排序 (Heap Sort)

  • 基本思想:利用堆的数据结构,将待排序数组构建成最大堆(最小堆),依次取堆顶元素进行排序。
  • 特点:稳定且效率较高(时间复杂度 O(n log n)),但相比快速排序,常数因子较大。

7. 计数排序 (Counting Sort)

  • 基本思想:适用于数据范围不大的整数排序,统计每个元素出现的次数,然后进行排序。
  • 特点:对于数据范围不大且比较集中的数据排序效率很高(时间复杂度为 O(n + k),k 表示数据范围)。

8. 桶排序 (Bucket Sort)

  • 基本思想:将数据分到有限数量的桶里,对每个桶进行单独排序,然后合并。
  • 特点:适用于数据均匀分布在范围内的排序,平均时间复杂度为 O(n + k),k 表示桶的个数。

9. 基数排序 (Radix Sort)

  • 基本思想:按照低位先排序,然后收集;再按照高位排序,再收集,依次进行,直到最高位。
  • 特点:适用于数字范围较小但位数较多的排序,时间复杂度为 O(n * k),k 表示最大的位数。

不稳定的排序:(快速选择一堆西瓜)

空间大的是(快,归,基)

快速排序逼格最高,空间最大,速度最快,都是nlog₂n

快速,堆,归并实现代码较多,速度最快

依靠元素连续下标存储的排序:堆和希尔

外部排序:归并

某一趟不能选出最终位置的有:希尔排序,插入(插入排序就像是打牌,后面的一张一张往前面移动)

某一趟能选出最终位置的有:选择,冒泡,堆,快速

交换排序:冒泡,快速

相关文章
|
2月前
排序1
排序1
16 0
|
算法 搜索推荐
排序篇(六)----排序小结
排序篇(六)----排序小结
44 0
|
搜索推荐
排序进行曲-v1.0
排序进行曲-v1.0
|
算法 搜索推荐
排序(详解)上
排序(详解)
72 0
|
算法 搜索推荐
排序(详解)中
排序(详解)
71 0
|
搜索推荐
7-207 排序
7-207 排序
57 0
|
存储 缓存 算法
多种排序
冒泡排序、选择排序、堆排序