功能:在一个升序数组中查找指定的数值,找到了就返回下标,找不到就返回 - 1.
代码实现:
#define _CRT_SECURE_NO_WARNINGS
//作者:爱吃糖的boy
#include<stdio.h>
//写一个二分查找函数
//
//功能:在一个升序数组中查找指定的数值,找到了就返回下标,找不到就返回 - 1.
int bin_search(int arr[], int left, int right, int key);
// arr 是查找的数组
//left 数组的左下标
//right 数组的右下标
//key 要查找的数字
int main()
{
int arr1[10] = {1,2,3,4,5,6,7,8,9,10};
int KEY;
printf("要查找的数字:\n");
scanf("%d",&KEY);
int c =bin_search(arr1, 0, 9, KEY);
printf("位置是%d ",c);
return 0;
}
int bin_search(int arr[], int left, int right, int key)
{
while (left <= right)
{
if (key > arr[(left + right + 1) / 2])
{
left = (left + right + 1) / 2;
}
else if (key < arr[(left + right + 1) / 2])
{
right = (left + right + 1) / 2;
}
else
{
return (left + right + 1) / 2;
}
}
return -1;
}
也可以改成手动输入数组