#include<stdio.h> int?main() { ????int?arr[]={0,1,2,3,4,5,6,7,8,9,10} ????int?sz=sizeof(arr)/sizeof([0]);//计算元素个数。 ????int?k=7;//在数组中找元素7。 ????int?left=0;//左边元素下标。 ????int?right=sz-1;//右下标为元素个数减1。 ????//下面为二分查找循环体,需要进行多次,与要加循环 ????while(left<=right)//满足left<=right时,才能查找。 ????{ ????????int?mid=(right+left)//2;求出中间元素下标 ????????if(arr[mid]<k)//中间元素下标所确定的元素与要找的元素比较。 ????????{ ????????????left=mid+1;//中间元素小于要找元素时,左下标变为中间下标加1,继续查找。 ????????} ?????????else?if(arr[mid]>k) ?????????{ ?????????????right=mid-1;//中间元素大于要找元素时,右下标变为中间下标减1,继续查找。 ?????????} ????????else ????????{ ????????????printf("找到了,下标是:%d\n",mid);//当中间元素与查找的元素相同时,找到了。 ????????????break;//跳出循环。 ????????} ?????} ?????if(left>right) ?????{ ?????????printf("找不到\n"); ?????} ?????return?0; ?}
原文:https://blog.51cto.com/u_15159248/2840201