未排序数组中的算法比较

时间:2014-04-28 01:35:38

标签: algorithm sorting

如果我有一个未排序的数组A [1 ..... n]

  1. 使用线性搜索来搜索数字x

  2. 使用冒泡排序按升序对数组A进行排序,然后使用二进制搜索在排序数组中搜索数字

  3. 哪种方式更有效 - 1还是2?

    如何证明这一点?

1 个答案:

答案 0 :(得分:0)

如果你需要搜索单个数字,没有什么比线性搜索更好:排序不能比O(n)更快地进行,甚至只有在特殊情况下才能实现。此外,冒泡排序效率极低,需要O(n 2 )时间。二进制搜索比这更快,因此整体时间将由O(n 2 )支配。

因此,您正在比较O(n)与O(n 2 );显然,O(n)获胜。

如果您需要搜索k个不同的数字,其中k大于n 2 ,则图片会有所不同。这种比较的结果很可能是消极的。