• 常见排序


    数组:有序的元素序列,有下标(角标),插入快,查找、删除慢,大小固定只能存储单一元素;有序数组比无序数组查询快。

    常见排序:

    1、选择排序(优点:数据移动次数已知为(n-1)次;    缺点:不稳定,比较次数多)

      -从待排序序列中,找到关键字最小的元素;

      -如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;

      -从余下的 N - 1 个元素中,找出关键字最小的元素,重复上诉一、二步骤,直到排序结束。

    2、冒泡排序(优点:稳定、简单 ;  缺点:慢,每次只能移动相邻的两个数据    一般不会用冒泡排序,性能慢

      -比较两个相邻的元素,如果第一个比第二个大,就交换位置;

      -对每一对相邻的元素做上诉比较,从第一对到最后一对,这时候,最后一个元素就是最大的元素;

      -针对所有元素重复上面步骤,除了最后一个元素;

      -一直比较,直到没有任何元素需要比较。

    3、插入排序(优点:稳定,快;    缺点:比较次数不一定,当数据总量庞大的时候,比较次数越少,插入点后的数据移动越多,但用链表可以解决这个问题)

    4、快速排序(优点:极快,数据移动少;   缺点:不稳定)

    5、希尔排序(优点:快,数据移动少;   缺点:不稳定,d的取值是多少,应取多少个不同的值,都无法确切知道,只能凭经验来取)

    6、箱排序(优点:快,效率达到O(1)    缺点:数据范围必须为正整数并且比较小)

    7、归并排序

      -归并排序是一种非就地排序,将需要与待排序序列一样多的辅助空间。在使用它对两个己有序的序列归并,将有无比的优势。其时间复杂度无论是在最好情况下还是在最坏情况下均是O(nlog2n)。

      对数据的有序性不敏感。若数据节点数据量大,那将不适合。但可改造成索引操作,效果将非常出色。

    8、堆排序

      由于它在直接选择排序的基础上利用了比较结果形成。效率提高很大。它完成排序的总比较次数为O(nlog2n)。它是对数据的有序性不敏感的一种算法。

      但堆排序将需要做两个步骤:-是建堆,二是排序(调整堆)。所以一般在小规模的序列中不合适,但对于较大的序列,将表现出优越的性能。

  • 相关阅读:
    PHP设计模式
    PHP 面向对象
    MYSQL 覆盖索引
    MYSQL IOPS、QPS、TPS
    MySQL 事务嵌套
    MySQL 慢查询优化
    MySQL 查询状态
    MySQL 乐观锁和悲观锁
    MySQL 分库、分表
    Spring Boot 全局异常捕捉,自定义异常并统一返回
  • 原文地址:https://www.cnblogs.com/zhoanghua/p/9281582.html
Copyright © 2020-2023  润新知