如果我有一个未排序的数组A [1 ..... n]
使用线性搜索来搜索数字x
使用冒泡排序按升序对数组A进行排序,然后使用二进制搜索在排序数组中搜索数字
哪种方式更有效 - 1还是2?
如何证明这一点?
答案 0 :(得分:0)
如果你需要搜索单个数字,没有什么比线性搜索更好:排序不能比O(n)更快地进行,甚至只有在特殊情况下才能实现。此外,冒泡排序效率极低,需要O(n 2 )时间。二进制搜索比这更快,因此整体时间将由O(n 2 )支配。
因此,您正在比较O(n)与O(n 2 );显然,O(n)获胜。
如果您需要搜索k
个不同的数字,其中k大于n 2 ,则图片会有所不同。这种比较的结果很可能是消极的。