递归练习4(拆半查找)

学习档案 | 2013-04-19 16:10:38 | 阅读 1246 次 | 评论(0)
#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;
}
文章评论,共0条
游客请输入验证码
浏览176324次
最新评论
  • zhouwenyuan:博主可以开发房产APP吗?
  • qunxingw:结合附件,在分表A或B...实验一下宏就理解了
  • qunxingw:这仅是小范围的一种思路,此题是指数级的数据。