例如,有1~8,查找其中的一个数,
- 如果采用简单查找,也就是遍历方法,从1开始,最多可能需要查找8次。为什么呢?
假设这个数字是8,从1开始,依次2,3,4,。。。,直至8,查找次数确实为8次。 - 采用二分方法,最多需要查找3次。为什么呢?
仍然假设这个数字是8,将1~8从中间分开,假设第一次猜测为5,反馈比5大,于是第二次猜测为5~8之间的数,由于5和6相邻,于是猜测为7,反馈结果仍然比7大,第三次猜测为8,命中。
假设这个数字为6,重复二分过程,第一次猜测为5,反馈比5大,第二次猜测为7,反馈比7小,于是第三次猜测为6,命中。
设定其余数字为目标数,仍然可以按二分法减少猜测次数。
总结,这就是二分查找。它的查找次数需要多少次呢?
二分也就是相当于,将多少个2相乘的结果为8,于是 23 = 8,即 Log28 = 3
假设,在n个自然数中进行查找,如果采用简单查找,需要查询n次,时间复杂度为O(n);如果采用二分查找法,需要查询log2n次,时间复杂度为O(log2n)。
原文地址:https://www.cnblogs.com/dogfaraway/p/12189831.html
时间: 2024-11-05 22:43:05