二分查找
给定一组数组查找数组中元素下标
算法思想:首先明确数组下标从0开始,首先让左下标和右下标相加除以2得出中间元素下标,让中间元素和要查找的元素对比,若要查找的元素比得出的中间元素大,让左下标加1,若要查找的元素比得出的中间元素小,让右下标减1,然后继续执行左下标和右下标相加除以2,直到得出中间元素和要查找元素相等,找到该元素,否则就是数组中没有想要查找的元素。利用while循环进行多次查找,注意,初始的右下标要用数组长度除以单个数组大小然后减1得出。
#include
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int sz = sizeof(arr)/sizeof(arr[0]);
int k =0;
printf(“请输入要查找得元素:”);
scanf("%d",&k);
int left= 0 ;
int right=sz-1;
while(left<=right)
{
int mid = (right+left)/2;
if(arr[mid]>k)
{
right=right-1;
}
esle if(arr[mid]
left=left+1;
}
else{
printf(“要查找的元素下标为“%dn”,mid);
break;
}
}
if(left>right)
{
printf(“数组中没有要查找的元素n”);
}
return 0 ;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)