如何在不知道 sort(XS) 是如何实现的情况下调和这个问题
Posted
技术标签:
【中文标题】如何在不知道 sort(XS) 是如何实现的情况下调和这个问题【英文标题】:How to reconcile this question without knowing how sort(XS) is implemented 【发布时间】:2022-01-15 11:30:34 【问题描述】:我的老师给了我以下信息来回答一个问题:
我的问题是,我如何在不知道 sort() 是如何实现的情况下准确回答这个问题?他没有回复我的电子邮件,所以我想我会在这里发帖。我是否正确假设我们需要知道在这种情况下排序的实现或运行时?
【问题讨论】:
对了,这个hw我已经提交了。我回答了这个问题,只是假设 sort() 算法的运行时间为 O(n!),并且确定“smallest_two”的运行时间也为 O(n!)。可能是错的,但我没能及时联系到老师问。 我倾向于同意您的评估,即 sort 的属性将推动这一点。此外,可能除了练习的重点之外,对列表进行排序以找到两个最小的元素似乎并不能很好地利用计算机资源。你是怎么想出n!
来排序的?
我只是假设 sort() 使用了像 bogosort 这样的算法,它的平均运行时间为 O(n!)
我们是否应该认为sort
可能做得不好,足以确保最小的两个值最终位于列表的前面?
另外,在惰性函数式语言 Haskell 中,smallest_two
可能需要 O(n) 时间,因为只计算排序结果的前两个元素。我只提到这一点,因为给定的代码看起来像 Haskellish。
【参考方案1】:
关键是短语“最好的最坏情况运行时”。
归结为,“如果您可以选择可能的最佳排序算法,最坏情况下的性能会是什么?”
答案是O(n log(n))
。
【讨论】:
以上是关于如何在不知道 sort(XS) 是如何实现的情况下调和这个问题的主要内容,如果未能解决你的问题,请参考以下文章
jsFiddle 如何在不危险的情况下允许和执行用户定义的 JavaScript?