排序法 |
最差时间分析 | 平均时间复杂度 | 稳定度 | 空间复杂度 |
冒泡排序 | O(n2) | O(n2) | 稳定 | O(1) |
快速排序 | O(n2) | O(n*log2n) | 不稳定 | O(log2n)~O(n) |
选择排序 | O(n2) | O(n2) | 稳定 | O(1) |
二叉树排序 | O(n2) | O(n*log2n) | 不稳定 | O(n) |
插入排序 |
O(n2) | O(n2) | 稳定 | O(1) |
堆排序 | O(n*log2n) | O(n*log2n) | 不稳定 | O(1) |
希尔排序 | O | O | 不稳定 | O(1) |
一、 插入排序
将第n个元素,和前面n-1个元素进行比较,如果比当中一个元素大,就插入其后面
二、 希尔排序 (插入排序的一种更高效的改进版本)
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序
三、选择排序
从未排序好的数据中,找到找到最大(最小的元素),组合到一个新的对列中
四、冒泡排序
一次比较两个元素,如果他们的顺序错误就把他们交换过来
五、归并排序
分治法(Divide and Conquer)的一个非常典型的应用。 分别排序,然后在组合在一起
六、快速排序
分治法 ,来把一个串行(list)分为两个子串行
七、堆排序
是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点
八、基排序
是将阵列分到有限数量的桶子里。每个桶子再个别排序