首先我们需要明确什么是二分查找。
***前提是在有序的数列中进行查找,例如1 2 3 4 5 6 7 8 9 10...
下来我们编写代码。
***前提是在有序的数列中进行查找,例如1 2 3 4 5 6 7 8 9 10...
下来我们编写代码。
#include<stdio.h> //引入头文件
int bin_search(int arr[], int key, int left, int right) //定义函数
{
int mid = 0; //定义局部变量
while(left <= right) // 用while 定义条件 左值<=右值
{
mid = left-(left-right)>>1; // 为了防止所定义的值栈溢出
if(arr[mid] < key)
{
left = mid+1;
}
else if(arr[mid] > key)
{
right = mid-1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9}; //有序的数列中
int key = 0; //定义要找的值
int left = 0; //定义数组的左值
int right = sizeof(arr)/sizeof(arr[0])-1; //定义~~ 的右值 *** 此处定义不可以在调用的函数内部执行,定义的值作为指针到了函数内部结果为1
scanf("%d", &key);
int ret = bin_search(arr, key, left, right); //定义返回值 和 调用函数 F11
if(-1 == ret) //实现没有查找到的数
{
printf("not exist\n");
}
else
{
printf("%d\n",arr[ret]);
}
return 0;
}