gpt4 book ai didi

arrays - 区分排序算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:09:23 27 4
gpt4 key购买 nike

有什么方法可以区分排序算法和它们的可执行文件吗?我在大学编程邮件列表中发现了这个问题,它是这样的:假设我有许多可执行文件,它们使用不同的算法对数据数组进行排序。我知道用什么算法来编写这些可执行文件,但我不知道在哪个可执行文件中使用了哪种算法。使用的算法是:

  1. 无意识冒泡排序
  2. 提早退出的冒泡排序
  3. 传统插入排序
  4. 列表插入排序
  5. 使用二分查找的插入排序
  6. 传统选择排序
  7. 合并排序
  8. 传统快速排序
  9. 快速排序三的中位数
  10. 随机快速排序
  11. 外壳排序时间 4
  12. BOGO 排序
  13. 基数排序 LSD 优先
  14. 桶排序
  15. 计数排序

最佳答案

您可以通过给它们越来越大的输入来检查它们的渐近行为,但是列出的许多算法都属于相同的复杂度类别,因此您无法区分合并排序和基于此的快速排序一个人。

要打破其中一些退化,您还可以查看不同可执行文件的内存使用情况,继续合并排序和快速排序示例,您会发现合并排序需要 O(n) 额外空间,而快速排序则需要只需要 O(log n) 额外的空间(堆栈大小)来执行排序。

例如,您可以通过给他们退化输入(例如 1 兆字节的零或 1 兆字节的反转字符串)来推断出一些东西。但除了有根据的猜测之外,您将无能为力。

(下面有很棒的评论。将其设为社区 Wiki,随时进行编辑。)

关于arrays - 区分排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28589253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com