【发布时间】:2013-03-08 03:35:48
【问题描述】:
这是我最近在网上找到的一个面试题:
如果你要实现一个以整数数组作为输入并返回最大值的函数,你会使用冒泡排序还是归并排序来实现这个函数?如果数组大小小于 1000 怎么办?如果大于1000怎么办?
这就是我的想法:
首先,用排序来实现上面的功能真的很奇怪。您只需遍历数组一次并找到最大值。 其次,如果必须在两者之间做出选择,那么冒泡排序会更好——您不必执行整个冒泡排序过程,而只需要执行第一遍。在时间和空间上都比归并排序好。
我的回答有错误吗?我错过了什么吗?
【问题讨论】:
-
我认为您拒绝这个前提是对的:线性通道(和固定空间)是您找到最大值所需的全部。如果面试官强迫你选择,我建议合并排序,因为它有更好的
O(n log n)时间复杂度。 -
这可能是一个旨在根除菜鸟的问题...?