二分查找
如果想要查找的记录是有序排列的,那么可以使用二分查找。每次都将关键字与中间的元素对比,如果不相等再判断范围,进行折半比较。
int binary_search(int *a,int data)
{
int low = 0,high = 9,min;
while(low <= high)
{
min = (low + high) / 2;
if (a[min] == data)
{
return min;
}
if (data > a[min])
{
low = min + 1;
}
else
{
high = min - 1;
}
}
return -1;
}
递归调用
int binary_search_recursion(int low,int high,int *a,int data)
{
int min;
if(low <= high)
{
min = (low + high) / 2;
if(a[min] == data)
{
return min;
}
if(low == high)
{
return -1;
}
if(data > a[min])
{
min = binary_search_recursion(min + 1,high,a,data);
}
else
{
min = binary_search_recursion(low,min - 1,a,data);
}
}
return min;
}