/*先把中间元素找到,寻找的元素在中间元素左边,
则小于中间元素,改变right。
再继续折半找中间元素寻找*/
#include<stdio.h>
#include<string.h>
int zheban(int x,char arr[],int left,int right)
{
while(left<=right)
{
int mid=left-(left-right)/2;
if(x > arr[mid])
{
left=mid+1;
}
else if(x < arr[mid])
{
right=mid-1;
}
else
{
return 1;
}
}
return 0;
}
int main()
{
int mid=0;
char arr[]={1,3,4,6,7,8,56,67,78};
int ret=0;
int size=0;
int num=0;
size=strlen(arr);
ret=zheban(5,arr,0,size-1);
if(ret==0)
{
printf("not exsit");
}
else
{
printf("%d",arr[mid]);
}
return 0;
}原文:http://10740184.blog.51cto.com/10730184/1704984