【排序算法】排序算法的复杂度

        归并排序是证明计算复杂度领域的一个重要结论的基础,而计算复杂性能够帮助我们理解排序自身固有的难易程度。计算复杂性在算法设计中扮演着非常重要的角色。

        研究复杂度的第一步是建立一个计算模型。一般来说,研究者会尽量寻找一个和问题相关的最简单的模型。对排序来说,研究对象是基于比较的算法,它们对数组元素的操作方式是由主键的比较决定的。一个基于比较的算法在两次比较之间可能会进行任意规模的计算,但它只能通过主键之间的比较得到某个主键的信息。

        没有任何基于比较的算法能够保证使用少于lg(N!)~NlgN次比较将长度为N的数组排序。

        归并排序是一种渐进最优的基于比较排序的算法。

        需要强调的是,和计算模型一样,我们需要精确地定义最优算法,在适用的情况下,关键在于计算复杂度会影响优秀软件的开发。

        归并排序的最优性并不是结束,因为还有些其他情况:

        1、归并排序的空间复杂度不是最优的

        2、在实践中不一定会遇到最坏情况

        3、除了比较,算法的其他操作也可能很重要,比如访问数组

        4、不进行比较也能将某些数据排序。

相关推荐

  1. 排序算法排序算法复杂

    2024-01-18 06:26:07       62 阅读
  2. 常见排序算法复杂

    2024-01-18 06:26:07       20 阅读
  3. 合并排序算法时间复杂是多少?

    2024-01-18 06:26:07       48 阅读
  4. 说说常见几种排序算法复杂

    2024-01-18 06:26:07       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 06:26:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 06:26:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 06:26:07       82 阅读
  4. Python语言-面向对象

    2024-01-18 06:26:07       91 阅读

热门阅读

  1. Jenkins 敏感信息实战指南

    2024-01-18 06:26:07       56 阅读
  2. 使用docker-compose搭建gitlab

    2024-01-18 06:26:07       51 阅读
  3. C语言所有字符串函数举例如何使用

    2024-01-18 06:26:07       56 阅读
  4. ubuntu18.04clion无法进入断点

    2024-01-18 06:26:07       60 阅读
  5. ubuntu 20.04 docker及nvidia-docker2安装

    2024-01-18 06:26:07       48 阅读
  6. Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?

    2024-01-18 06:26:07       47 阅读
  7. ubuntu 22.04 安装 device-tree-compiler (dtc)

    2024-01-18 06:26:07       53 阅读
  8. mybatis-Plus 的自动填充

    2024-01-18 06:26:07       49 阅读
  9. linux配置DNS主从服务器

    2024-01-18 06:26:07       57 阅读
  10. Python程序员常用的IDE和其它开发工具

    2024-01-18 06:26:07       48 阅读