1、排序概念
排序:就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。
排序码:通常数据元素有多个属性域,其中有一个属性域可用来区分元素,作为排序依据,该域即为排序码。
按照主排序码进行排序,排序的结果是唯一的。
按照次排序码进行排序,排序的结果可能是不唯一的。
2、排序算法稳定性
如果在元素序列中有两个元素R[i]和R[j],它们的排序码K[i] == k[j],且在排序之前,元素R[i]在R[j]的前面。如果在排序之后,元素R[i]仍在R[j]之前,则称这个排序算法是稳定的,否则称这个排序算法是不稳定的。
内部排序:数据元素全部放在内存中的排序。
外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。
3、常见排序算法
排序算法 | 最好情况 | 最坏情况 | 空间复杂度 | 稳定性 |
直接插入排序 | O(n) | O(![]() |
O(1) | 稳定 |
希尔排序 | O(![]() |
O(![]() |
O(1) | 不稳定 |
选择排序 | O(![]() |
O(![]() |
O(1) | 不稳定 |
堆排序 | O(![]() |
O(![]() |
O(1) | 不稳定 |
冒泡排序 | O(n) | O( |