二分查找的用处

Posted 一只学编程的小猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找的用处相关的知识,希望对你有一定的参考价值。

前几日面试金山WPS,在准备的期间看到了19年有这么一个题:

给你一组水球,从一栋100层楼高的地放扔下去,水球在下落过程中会自行爆炸,要求用最少的次数得出水球是在下落几层后爆炸的。


其实这题就是二分查找的一个变形,要进行二分查找有一个要求:数组已经是排好序的。


那么我们看看这题,楼层的编号在默认之中就已经排好序了;题目的意思就是在1到100间,查找一个数。


下面献上源码:

#include <QCoreApplication>#include <iostream>
int found_time = 0;
void binary_search(int int_array[], int index_min, int index_max, int aim_num){ found_time++; int index_mid = (index_min + index_max) / 2; if(int_array[index_mid] > aim_num) { binary_search(int_array, index_min, index_mid, aim_num); } else if(int_array[index_mid] < aim_num) { binary_search(int_array, index_mid, index_max, aim_num); } else { std::cout << "found it. time:" << found_time << ", value:" << int_array[index_mid] << std::endl; return; }}
int main(int argc, char *argv[]){ QCoreApplication a(argc, argv);
int int_array[100]; for(int i = 0; i < 100; i++) { int_array[i] = i + 1; }
binary_search(int_array, 0, 99, 5);
return a.exec();}

看看结果:


这题我看当时好几个人回答的,都没有提到二分查找。如果这题直接说这是一个二分查找,估计大家都会知道怎么做,但是变个形就不会了,学算法还是不要因为要考算法而去学习算法,那样最多是在背题,这就好比高中的时候背数学题一样,不可能都背的下来的,还是需要平时的积累。

以上是关于二分查找的用处的主要内容,如果未能解决你的问题,请参考以下文章

python 递归和二分法查找

谈谈我是怎么学习二分查找的(学习算法没有捷径)

二分查找常见套路与分析

二分查找常见套路与分析

代码题(12)— 二分查找

二分查找代码