主要思想是:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段 中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止
#include<stdio.h>
int search(int *a, int num, int low, int high)
{
int mid =(low + high)/2;
if(low<=high)
{
if(num < a[mid])
return search(a, num, low, mid-1); //加return
if(num > a[mid])
return search(a, num, mid+1, high);//加return
if(num==a[mid])
return 1;
}
else
return 0;
}
int main(){
int a[11] = {0, 1, 2, 3, 4, 5, 9, 11, 12, 13, 15};
if(search(a, 11, 0, 10)==1)
printf(“success!!”);
else
printf(“failed!!”);
}