排序链表 - 为什么不呢?

时间:2011-10-10 13:29:32

标签: algorithm sorting

我最近正在阅读article,提到:

  

为了上帝的缘故,不要在面试过程中尝试对链表进行排序。

作者写这篇文章有什么理由吗?原因尚不清楚。我知道合并排序在O(nlgn)时间内链接列表上工作 - 这有什么问题?我错过了一些明显的东西吗?

修改 问题的任何原因被投票结束?我老实说好奇,只是寻找一些答案或有趣的观点。

3 个答案:

答案 0 :(得分:16)

我无法知道为什么博客的作者写了他的所作所为。如果我不得不猜测,我会说真正的意思是:

  

不要认为有效地对链表进行排序就像排序提供对其元素的随机访问的数据结构一样简单。如果您最终依赖于能够对链表进行排序,请准备好解释合适的算法可能是什么,并讨论其复杂性。

答案 1 :(得分:16)

我认为你会发现,尽管可以使用合并排序对链表进行排序,但有效地执行此操作的代码也有所涉及。在面试过程中站在白板上时,这不是你想要发展的东西。

答案 2 :(得分:1)

大多数排序算法使用在特定索引处获取/设置元素的操作,并且为了使排序算法快速,需要快速。通常它们是O(1)表示正常列表,但是对于链表,它是O(n),这使得排序非常低效。也许这抓住了你引用背后的推理。