<pre name="code" class="cpp">#include <stdio.h>
//二分查找算法
int binary(int* arr, int value, int length)
{
int left,right,mid;
left = 0;
right = length - 1;
mid = (left+right)/2;
while(left <= right)
{
if(arr[mid] < value)
{
left = mid + 1;
}
else if(arr[mid] > value)
{
right = mid - 1;
}
else
{
break;
}
mid = (left+right)/2;
}
if(arr[mid]==value)
return mid;
return -1;
}
int main()
{
int i=0;
int arr[]={1,2,3,4,8,12,22,44,93,127};
for(i=0; i<sizeof(arr)/sizeof(int); i++)
{
printf("%d\t", arr[i]);
}
printf("\n");
int input;
printf("请输入需要查找的数字:");
scanf("%d",&input);
int index = binary(arr, input, sizeof(arr)/sizeof(int));
if(index == -1)
{
printf("没有找到");
}
else
{
printf("找到了,索引为:%d\n",index);
}
return 0;
}
输出:
guhui@iZ25szu9eviZ:~/webrtc/project/cpp/trunk/algorithm$ ./a.out
1 2 3 4 8 12 22 44 93 127
请输入需要查找的数字:8
找到了,索引为:4
guhui@iZ25szu9eviZ:~/webrtc/project/cpp/trunk/algorithm$ ./a.out
1 2 3 4 8 12 22 44 93 127
请输入需要查找的数字:44
找到了,索引为:7
guhui@iZ25szu9eviZ:~/webrtc/project/cpp/trunk/algorithm$ ./a.out
1 2 3 4 8 12 22 44 93 127
请输入需要查找的数字:1232
没有找到guhui@iZ25szu9eviZ:~/webrtc/project/cpp/trunk/algorithm$ ./a.out
1 2 3 4 8 12 22 44 93 127
请输入需要查找的数字:123123123
没有找到guhui@iZ25szu9eviZ:~/webrtc/project/cpp/trunk/algorithm$ clear