算法分类
在这里插入图片描述常见排序算法可以分为两大类:
比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行
O(n)
,因此也称为线性时间非比较类排序。
算法复杂度分析
以上排序算法的复杂度分析如下图所示:
在这里插入图片描述
相关概念
-
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。
-
不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。
-
时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。
-
空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。
python实现各排序算法目录如下
点击下面相应的链接即可查看各个算法的详细介绍及python实现方法:
- 冒泡排序(BubbleSort)
- 选择排序(SelectionSort)
- 插入排序(InsertSort)
- 归并排序(MergeSort)
- 快速排序(QuickSort)
- 堆排序(Heap Sort)
- 计数排序(Count Sort)
- 桶排序(Bucket Sort)
- 基数排序(Radix Sort)
- 希尔排序(Shell Sort)
想了解其他排序相关算法可以,看作者的排序算法专栏。
如果喜欢作者,欢迎点赞、收藏及关注,谢谢!
网友评论