如果要在一堆有序的数列中去查找是否有自己想找的数字,如果一个一个去找,数据变大就不好找了。但是如果使用二分查找就会很方便。 例如你要从2的32次方查找,最坏的情况一个一个找就要找2的32次方才能找到,而二分查找最坏只需32次。
首先第一步就是找中间值,这时候相当于将范围减半,如果你比这个值大,那就在中间值到最大值之间,再去找这个新范围里的中间值,再通过这个方法使得范围减半,直到最后缩小到一个为止。 我更喜欢把它理解为下限和上限,初始的上下限就是最大值和最小值,当你求出中间值比你要找的数大,说明上限变成了中间值-1,如图写出代码。找的值就是新范围最大值最小值的平均数,目的就是每次让范围减半,故叫做二分查找。 当然如果是个乱序数列也可以先用冒泡排序再使用二分查找,但是不能找出相应的坐标,因为冒泡排序打乱了原来的坐标了。
|