拆半查找又称为二分查找只对应有序序列才能使用。
对线性链表无法进行有效的拆半查找。
#include <stdio.h>
#include <stdlib.h>
int search(int array[],int n,int value)
{
int low,high,mid;
low=0;
high=n-1;
while(low<high)
{
mid=(low+high)/2;
if(array[mid]==value)
{
return 1;
}
else
{
if(value<array[mid])
{
high=mid-1;
}
if(value>array[mid])
{
low=mid+1;
}
}
}
return 0;
}
void main()
{
int res,value;
int array[10]={1,2,3,4,5,6,7,8,9,10};
printf("please input the value you want to find:\n");
scanf("%d",&value);
res=search(array,10,value);
if(res)
{
printf("find successful!\n");
}
else
{
printf("find failed!\n");
}
}