1. 排序的基本概念
排序的定义:
- 排序就是将一组数据元素按照某种关键字重新排列成有序序列的过程。
排序的分类:
-
按照排序过程的存储位置可以分为内部排序和外部排序
-
内部排序是将数据全部加载到内存中进行排序,适用于数据量比较小的场景。
-
外部排序是指数据量过大,无法一次性加载到内存中,需要借助外存进行排序,通过多次读写和归并实现。
-
-
按照排序依据的操作可以分为比较排序和非比较排序
-
比较排序通过元素之间的比较来确定顺序,时间复杂度最快为\(O(nlog_{2}n)\)。
-
非比较排序不依赖元素比较,利用元素特性直接统计或分配,时间复杂度可以达到\(O(n)\),但是使用场景有限。
-
-
按稳定性可以分为稳定排序和不稳定排序。
排序算法的关键特性:
-
时间复杂度
- 最好时间复杂度,最坏时间复杂度,平均时间复杂度。
-
空间复杂度
-
原地排序,只需要常数额外空间,空间复杂度为\(O(1)\)。
-
非原地排序,需要额外空间。
-
-
稳定性
- 数组排序后,关键字相同的元素,在结果数组中的相对顺序和排序之前的相对顺序不变。
- 数组排序后,关键字相同的元素,在结果数组中的相对顺序和排序之前的相对顺序不变。