递归练习4(拆半查找)

作者在 2013-04-19 16:10:38 发布以下内容
#include<stdio.h>
int find(int *arr,int low, int hight,int key)
{
    int mid=(hight+low)/2 ;
    if(hight<low) return -1;//处理不在数组内之数 ,此处参考网上技术,感觉很巧妙
    if(arr[mid]!=key)
    {
    if(arr[mid]>key) return find(arr,low,mid-1,key);
    else  return find(arr,mid+1,hight,key);
    }
    else return mid;
}
int main()
{
  int  arr[]={1,2,3,4,5,6,7,9,16};
  printf("数组位置:%d\n", find(arr, 0,  8, 3));
  printf("数组位置:%d\n", find(arr, 0,  8, 7));
  printf("数组位置:%d\n", find(arr, 0,  8, 19));
  return 0;
}
学习档案 | 阅读 1733 次
文章评论,共0条
游客请输入验证码
浏览231953次
最新评论