排序基本上可以分为四大类:插入排序、选择排序、交换排序、归并排序。
从占用的空间来看还可以分为内部排序、和外部排序。
当然,还有很特殊的排序的方法,比如计数排序、基数排序。
所谓排序,就是讲一串有相同特征的数据,按照从小到大或者从大到小的顺序给排列。
每一种排序都有自己的优点,不同的排序方法可能适用于不同的场景,衡量一个排序的好坏有以下几个数据来判断:时间复杂度、空间复杂度、稳定性。
时间复杂度 | 空间复杂度 | 稳定性 | |
---|---|---|---|
直接插入排序 | O(N^2) | O(1) | 稳定 |
希尔排序 | O(N^1.3) ~ O(N^2) | O(1) | 不稳定 |
堆排序 | O(N*logN) | O(1) | 不稳定 |
冒泡排序 | O(N^2) | O(1) | 稳定 |
快速排序 | O(N*logN) | O(logN) | 不稳定 |
归并排序 | O(N*logN) | O(N) | 稳定 |