C 用二分函数查找指定数组中的某个值

   1.程序代码

#define _CRT_SECURE_NO_WARNINGS 1


#include <stdio.h>
#include <Windows.h>


int binary_search(int arr[], int left, int right, int key) //定义一个二分查找函数
{
while (left <= right)
{
int mid = left - (left - right) / 2; //定义一个中间量


if  (arr[mid] > key) // 中间量与要找的值进行比较
{
right = mid - 1;
}
else if (arr[mid] < key)
{
left = mid + 1;
}
else
{
return mid; //若找到要找的数字 函数的返回值为mid的值
}
}
return -1; //若找不到要找的数字 函数返回值为-1;
}


int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; //给定一个数组
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1; //sizeof函数为求占几个字节
int key = 0;
int result;

scanf("%d", &key); //输入一个要找的数字
result = binary_search(arr, left, right, key); // 把二分函数执行结果赋值给result

if (result == -1) //返回-1时找不到要找的值

{
printf("找不到\n");
}
else //返回其他值则为mid的值
{
printf("找到了,下标为 :%d", result);
}

system("pause");
return 0;

}

2.执行结果

C 用二分函数查找指定数组中的某个值

C 用二分函数查找指定数组中的某个值

C 用二分函数查找指定数组中的某个值