1.整个过程
首先定义一个有序数组,然后利用函数binary_search,利用if语句进行判断,如果返回值为-1,则没有找到,反之找到。之后定义函数binary_search(),利用二分法进行查找,若找到则返回下标,否则返回-1。
2.实现程序
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int binary_search(int a[], int k, int s)//定义函数
{
int left = 0;
int right = s - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (a [mid] > k)
{
right = mid - 1;
}
else if (a[mid] < k)
{
left = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int key = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr, key, sz);
if (ret == -1)
{
printf("找不到!");
}
else
{
printf("找到了!下标是:%d\n", ret);
}
system("pause");
return 0;
}