简单实现二分查找
首先定义一个有序数组
算法思想:通过定义左右下标再取一个中间值,由此不断地缩短查找范围
下述代码块为函数部分
int BianSear(int arr[], int k, int m)
{
int left = 0;
int right = m - 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;
}
if (left > right)
{
return -1;
}
}
接下来是主函数部分
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9 };
int m = sizeof(arr) / sizeof(arr[0]);//计算元素个数
int k = 0;
printf("请输入1--9自然数数组需查数:>");
scanf("%d", &k);
int i = BianSear(arr, k, m);//接收查找函数返回值
if (i == -1)
{
printf("找不到\n");
}
else
printf("下标是:%d\n", i);
return 0;
}