排序二进制搜索或简单线性搜索是否更好?
由于
答案 0 :(得分:23)
这取决于你想要在排序后搜索的频率 - 如果只有一次,那么线性搜索可能会更快。当然,更好的选择通常是(但并非总是如此)以使用集合或地图等方式按照排序顺序维护事物。
答案 1 :(得分:8)
不,因为快速排序比线性慢,而且你还要添加更多。
O(n*log(n)) + O(log(n)) = O(n*log(n)) > O(n)
编辑:指出不正确,因为快速排序的最坏情况甚至更慢,O(n ^ 2)。 n * log(n)是最好的情况和平均情况,它提供的下限已经慢于线性。正确的符号可能是Θ而不是O。
答案 2 :(得分:3)
线性搜索是O(n),排序是O(n log n),二进制搜索是O(log n)。因此,如果您希望搜索超过log n次,则排序更好。 (当然这只是理论上的表现,在练习中你也对常数感兴趣,尤其是对于不太大的n)。
答案 3 :(得分:3)
忘记二分之一搜索:
快速排序最佳案例:O(n log n)
快速排序最差情况:O(n^2)
线性搜索最坏情况:n
因此,无论您在快速排序后如何操作,如果您进行了线性搜索,您已经找到了该项目。但是,这仅适用于第一次搜索。假设您有多个搜索要做。如果您保留(快速)排序列表,则所有后续搜索的最差情况为O (log n)
,因此在多次搜索中(特别是在较大的数据集上),排序和搜索将是明智的。与一般的编程和软件设计一样,从来没有“一刀切”,所以考虑哪些模式和实现最适合您的特定领域。
答案 4 :(得分:0)
这取决于输入。对于少量元素,线性搜索通常更快。