1:二分查找的简介
我们经常遇到在数组中找到其中一个特定得元素,,假设我们一个一个的去数组中找这个元素的话,如果数组中的元素只有几个或者几十个的时候那么可能会很快找到需要的元素,那么如果我们面临的是更多的元素的时候呢,如果也按照常规的去数组中一个元素一个元素的排查那么是不i是需要消耗大量的内存和时间呢?那么这时就充分体现出二分查找的简洁与方便。
2:二分查找的思路
二分查找就是在多个元素中每一次都折半去查找一次。我们设一个数组为n里面的元素个数有{1,2,3,4,5,6,7,8,9};设我们需要找到元素中的7。我们知道数组取值对应的是下标,那么我们在设一个左下标为left,在设一个右下标为right。我们知道数组的第一个下标是从0开始,那么右下标就是元素个数-1。在设置一个中间下标为mid=(left+right)/2。
这时我们就得到了我们的中间下标。我们在给上一个循环使如果查找一次中间下标大于我们查找的数那么我们的右下标此时就说明大了,就把中间下标减一之后赋值给我们的右下标,如果小了就加上一之后赋值给我们的左下标。
3:举例说明
设这个数组里面的元素个数为{1,2,3,4,5,6,7,8,9},我们查找的数为7。
第一次查找 mid=(left+right)/2 mid==下标为4对应元素5 小于我们查找的数那么把中间下标加一之后赋值给left==下标为4+1;右下标不变。此时没查找的元素为5 6 7 8 9
第二次查找 mid=(left+right)/2 mid==下标为7对应元素8 大于我们查找的数那么把中间下标减一之后赋值给right==下标为7-1,那么此时查找的范围为 下标为5 6的数
第三次查找 mid=(left+right)/2 mid==下标为5 小于我们查找的数那么把中间下标加一之后赋值给left==下标为5+1;
第四次查找 mid=(left+right)/2 mid==下标为6对应元素7
4:代码的实现