实现有序数组的二分查找 C语言
程序员文章站
2024-03-17 14:52:46
...
写一个函数实现有序数组的二分查找
#include<stdio.h>
int Binarysearch(int arr[],int key,int n ) // 数组 ,关键字,数组长度。
{
int left = 0;
int right = n-1;
int mid = 0;
while (left <= right)
{
int mid = (left + right)/2;
if (key < arr[mid]) // 在中间值左边
{
right = mid - 1;
}
else if (key>arr[mid]) //在中间值右边
{
left = mid + 1;
}
else //中间值等于关键字
{
return mid; //找到了返回下标
}
}
return -1; //找不到
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int key = 5;
int n = sizeof(arr) / sizeof(arr[0]);
int t=Binarysearch(arr, key,n );
if (t == -1)
{
printf("找不到\n");
}
else
{
printf("找到了下标是%d\n",t);
}
return 0;
}