我们不得不知道8种排序算法。8种排序更是大企业面试的常问题目。
首先我们要明白一些概念:
首先作为排序由于记录数量,使排序过程中涉及的存储器不同,可将排序方法分为内部排序,外部排序。
内部排序:待排序的记录存放在计算机随机存储器中进行的排序过程。
外部排序:待排序记录很大,是内存一次不能全部记录,在排序中尚要对外存进行访问的排序过程。
那常见的内部排序有
选择排序(直接选择排序,堆排序)
交换排序(冒泡排序,快速排序)
插入排序(直接插入排序,折半插入排序,希尔排序)
归并排序
首先请看这是我总结出来的一张表格:
排序名 | 时间复杂度 | 空间复杂度 | 稳定性 |
冒泡排序 | O(n^2) | O(1) | 稳定 |
直接选择排序 | O(n^2) | O(1) | 不稳定 |
快速排序 | O(nlogn) | O(logn) | 不稳定 |
直接插入排序 | O(n^2) | O(1) | 不稳定 |
堆排序 | O(nlogn) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | 稳定 |
折半插入排序 | O(n^2) | O(1) | 稳定 |
希尔排序 | O(n(logn)^2) | O(1) | 不稳定 |
首先要看这张表要明白什么是时间复杂度,什么是空间复杂度,什么是稳定性。.
时间复杂度:排序比较的次数,也就是循环的次数。
空间复杂度:就是内存的开销
稳定性:若两个记录A和B的关键字值相等,但是排序后A,B的先后次序保持不变,则称这种排序算法是稳定
优缺点:自己总结,评判标准是实价和空间复杂度的大小。