各种排序算法的优缺点

来源:互联网 发布:汽车美容维修软件 编辑:程序博客网 时间:2024/04/28 09:25


1.插入排序

基本思想:

   将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。

优点:稳定,快

缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候

2.希尔排序

基本思想:

   先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行依次直接插入排序。

优点:快,数据移动少

缺点:不稳定,d的取值是多少,应取多少个不同的值,都无法确切知道,只能凭经验来取

3.简单选择排序

基本思想:

   将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。

优点:数据移动次数已知为(n-1)次

缺点:比较次数多

4.冒泡排序

基本思想:

   在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

优点:稳定

缺点:慢,每次只能移动相邻两个数据

5.快速排序

基本思想:

   1)选择一个基准元素,通常选择第一个元素或者最后一个元素,

   2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比    基准元素值小。另一部分记录的 元素值比基准值大。

   3)此时基准元素在其排好序后的正确位置

   4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。

优点:极快,数据移动少.

缺点:不稳定

6.简单选择排序

   归并排序是一种非就地排序,将需要与待排序序列一样多的辅助空间。在使用它对两个己有序的序列归并,将有无比的优势。其时间复杂度无论是在最好情况下还是在最坏情况下均是O(nlog2n)。对数据的有序性不敏感。若数据节点数据量大,那将不适合。但可改造成索引操作,效果将非常出色。

7.简单选择排序

   堆排序:由于它在直接选择排序的基础上利用了比较结果形成。效率提高很大。它完成排序的总比较次数为O(nlog2n)。它是对数据的有序性不敏感的一种算法。但堆排序将需要做两个步骤:-是建堆,二是排序(调整堆)。所以一般在小规模的序列中不合适,但对于较大的序列,将表现出优越的性能。

















0 0
原创粉丝点击