有序数组中采用二分查找法查找元素并输出其下标
如果采用一般的从头到尾循环查找,效率会比较低。于是我们采取二分查找法提高效率。
比如现在在1到9的有序数组中查找7
#include<stdio.h>
//自定义函数 二分查找有序数组中的元素
//如果找到了就返回这个数的下标,如果找不到则返回-1
int binary_search(int arr[],int k,int sz)
{
int left=0;
int right=sz-1;//数组末尾元素的下标
while(left<=right)
{
int mid=(left+right)/2;//求中间元素下标
if(arr[mid]<k)
{left=mid+1;}
else if(arr[mid]>k)
{right=mid-1;}
else
{return mid;}
}
return -1;
}
int main()
{
int sz=0;
int ret=0;
int arr[]={1,2,3,4,5,6,7,8,9,10};
sz=sizeof(arr)/sizeof(arr[0]);//求数组元素个数
int k=7;
ret=binary_search(arr,k,sz);//调用自定义函数
if(ret==-1)
{
printf("找不到");
}
else
{
printf("找到了,下标为:%d",ret);
}
return 0;
}