(刚刚学到到的知识,掌握的不怎么好,如有不足麻烦留言)
第一步:先理清你要查找的数组(最好是有序排序的数组,本人还没学到数组的排序就只能用有序的数组来)
int arr[10]={1,2,3,4,5,6,7,8,9,10};
第二步:计算出该数组的长度(如是字符串数组结尾处会有'\0')
第三步:确定好下标,利用下标开头和结尾下标之和取平均值,
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int left=0;//左下标
int right=((sizeof arr)/sizeof(int));//右下标
int concent=(left+right)/2;//中间下标
第四步:从数组的中间开始找
第五步:比较数组中间值和查找的值的大小,然后再进行切割,再从切割到的数组再进行按照(第一,二,三四步来进行下去)
本人书写的代码如下:
#include<stdio.h>
//二分查找
int main()
{ int arr[10]={1,2,3,4,5,6,7,8,9,10};
int left=0;
int right=((sizeof arr)/sizeof(int));
int concent=(left+right)/2;
int n=0;
printf("请输入你要查找的数字:>");
scanf("%d",&n);
while(left<=right)
{
if(n==arr[concent])
{
printf("找到了,下标为%d",concent);
break;
}
else if(n>arr[concent])
{
left=concent+1;
concent=(left+right)/2;
}
else if(n<arr[concent])
{
right=concent-1;
concent=(left+right)/2;
}
}
if(left>right)
{
printf("找不到");
}