8 排序

本节作为排序的开场白,先总结一下各种排序的稳定性和时间复杂度。

首先说一下排序稳定性的定义:

假设排序序号是 i 和 j ,且在排序前的序列中 i 领先于 j ,如果排序之后 i 仍然领先于 j ,则称所有的排方法是稳定的;反之,若使得排序后的序列中,j 领先 i ,则称所用的排序算法是不稳定的。

冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法;

选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法。

具体的原因会在下面的章节中进行论述。

冒泡法:  
这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡:  复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。

直接插入排序:O(n*n)

选择排序:O(n*n)

快速排序:平均时间复杂度 n * logn,所有内部排序方法中最高好的,大多数情况下总是最好的。

归并排序:n * logn

堆排序:n * logn

希尔排序:算法的复杂度为n的1.2次幂

 

 

posted @ 2019-03-04 16:15  小林子奋斗的点滴  阅读(198)  评论(0编辑  收藏  举报