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.执行结果




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值