一、描述:
在一个有序数组中查找具体的某个数 N。若未找到,则返回-1。
二、代码:
#include<stdio.h>
#include<windows.h>
int BinarySearch(int a[], int left,int right,int key){
while (left <= right)
{
int mid = left + ((right - left) >> 1); //中间值
if (key == a[mid]) //关键字相等中间值,找到了
{
return mid;
}
else if (key <a[mid]) //关键字小于中间值,在中间之左边查找
{
return BinarySearch(a, left, mid - 1, key);
}
else //关键字大于中间值,在中间值右边查找
{
return BinarySearch(a, mid +1,right, key);
}
}
return -1; //输入有误,没有找到,返回-1
}
int main(){
int a[] = { 11, 22, 33, 44, 55, 66, 77, 88,99,100 };
int num = sizeof(a) / sizeof(a[0]); //求数组个数
int i = 0;
printf("Please Emter Number:");
scanf_s("%d", &i);
printf("下标为:%d\n", BinarySearch(a, 0, num-1, i));
system("pause");
return 0;
}