我们平常查找一个数字可能会通过循环遍历来找到这个数字,这样当然很好,但是如果要找的数字只有一个,但是要找的这个数字在几亿个数字里面,难道要循环几亿次吗?这个时候就可以通过折半查找,查找一次就可以排除一半。
下面的代码是通过循环遍历来查找数字:
这样确实可以找到,但是如果数字太大,这样效率会很低。但是通过折半查找,效率就会很高。
int arr[]={1,2,3,4,5,6,7,8,9,10}; //找到数字7,要通过下标来找,我们先定义一个左下标和右下标
int left=0; //左下标
int sz = sizeof(arr) / sizeof(arr[0]);
int right=sz-1;//右下标
要查找的数字:int k=7;
int mid=(left+right)/2; //找到中间的数字
如果要查找的数字k<arr[mid] , mid右边的数字全部清掉,但是这样右下标就变成了mid-1
如果要查找的数字k>arr[mid] , mid左边的数字全部清掉,但是这样左下标就变成了mid+1
下面是代码的实现:
都看到这了,点个赞,加个关注呗!!!!!!