关于二分法,在此不多做介绍,可以参考百度百科词条【二分法查找】
提醒一下,该词条中的C代码混杂了C++,不过如果你也学过C++,看懂应该没有问题。
以下是我的代码:
#include<stdio.h>
int Search_Bin(int array[],int length,int key)
{
//要求array为升序序列,若为降序序列,需要稍作修改
//参数说明,array为查找数组,length为数组长度(即数组元素个数),key为查找的关键字
//查找成功时返回数组下标,查找失败时返回-1
int left=0; //注意,C/C++中数组下标从0开始
int right=length-1;
int mid;
while(left<=right)
{
mid=left+(right-left)/2; //此处若用(left+right)/2可能会出现溢出,导致结果不正确
if(array[mid]==key)
return mid; //查找成功,返回
else if(key<array[mid])
right=mid-1; //继续在左半区间查找
else
left=mid+1; //继续在右半区间查找
}
return -1; //查找失败,返回-1
}
void main()
{
int array[10]={1,2,3,4,5,6,