文章目录
0. 排序算法介绍
排序算法是数据结构中最基本的算法,也是最经典的算法之一。
排序算法有多种分类方法,如:内部排序和外部排序、比较排序和非比较排序、稳定排序和非稳定排序等。
0.1 内部排序和外部排序
- 内部排序和外部排序:
(1)内部排序:内部排序是数据记录在内存中进行排序。
(2)外部排序:外部排序因为排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 - 按照内部排序和外部排序进行分类:
(1)内部排序:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序。
(2)外部排序:计数排序。
0.2 比较排序和非比较排序
- 比较排序和非比较排序:
(1)比较排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
(2)非比较排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 - 按比较排序和非比较排序进行分类:
(1)比较排序:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。
(2)非比较排序:计数排序,基数排序,桶排序等。
0.3 稳定排序和非稳定排序
- 稳定排序和非稳定排序
排序算法的稳定性是:当元素列表中出现相等的元素时,相等元素的相对次序是否固定不变。如果相对次序固定不变,则排序算法是稳定的,反之就是不稳定的。 - 按照稳定排序和非稳定排序进行分类:
(1)稳定排序:冒泡排序、插入排序、归并排序、计数排序。
(2)非稳定排序:希尔排序、选择排序、快速排序、堆排序。
0.4 各大排序算法适用场合
(1)不带卫星数据的数据排序,不需要稳定性,用快排;
(2)带卫星数据的、有数据结构类型的数据,需要稳定性,用归并排序;
(3)数据量小的时候,用插入排序;
(4)需要稳定性,并且对空间有要求的话,用堆排序;
(5)数字都是整数,而且数值范围有限,用计数排序。