排序是为了方便检索,涉及到一组内容,对这一组对象按照规定次序重新排列。
排序的规则和方式多种多样,每一类排序方式他们的基本思想是一致的。不同排序方式的适用情况和优劣,用时间复杂度和空间复杂度衡量。每一种排序方法本身决定了排序方法的稳定性。所以我们可以从四个方面宏观的理解排序的内容。
分类
排序根据待排序的记录是否全部放在内存中分为内部排序和外部排序。内部排序表示记录全部存放在内存中。这里我们只介绍内部排序。
基本思想
指标
时间复杂度的分析
从键值比较的次数和记录移动的次数两方面来考虑。
4类排序,列出共6种;
插入排序是一种,归并排序一种。交换排序和选择排序都是两种。
在时间复杂度上分为了两类:其中3种时间复杂度为O(n^2)分别是冒泡排序和名称中带“直接”二字的直接插入排序和直接选择排序。通过适用范围得出,除了堆排序外,时间复杂度为O(n^2)的排序方式,都适用于记录数量小的序列;
稳定性
稳定性是指相同键值的两个记录在排序前后相对位置的变化情况。如果相对位置不会变化为稳定,反之不稳定;
在上图中,4类,6种排序方法中,归并和插入都是稳定的,选择是都不稳定的。交换排序中,冒泡是稳定的,快速是不稳定的。
总结
对排序从这4个角度入手,从宏观上总结。每一类排序都有主要的思想,每一类中围绕思想扩展出多种排序方式。当排序一个序列的时候,根据实际情况和排序算法的优劣选择出合适的。