一、
#include<stdio.h>
#include<stdlib.h>
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;
int key = 7;
int mid = 0;
while (left <= right)
{
mid = left + ((right-left) >>1);
if (arr[mid] > key)
{
right=mid - 1;
}
else if (arr[mid] < key)
{
left = mid + 1;
}
else
break;
}
if (left <= right)
printf("找到了,下标是%d\n", mid);
else
printf("找不到\n");
system("pause");
return(0);
}
二、
#include<stdio.h>
#include<stdlib.h>
int binsearh(int a[], int size,int k)
{
int left = 0;
int right = size - 1;
int mid = 0;
while (left <= right)
{
mid = left + ((right-left) >>1);
if (k < a[mid])
{
right = mid - 1;
}
else if (k>a[mid])
{
left = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
int size = sizeof(a) / sizeof(a[0]);
int k = 5;
int index = binsearh(a,size,k);
if (index<0)
{
printf(" not find it!\n");
return -1;
}
printf("find it:%d\n",index);
system("pause");
return 0;
}