递归练习4(拆半查找)

学习档案 | 2013-04-19 16:10:38 | 阅读 1315 次 | 评论(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条
游客请输入验证码
浏览189677次
最新评论
  • yu1776151787:电子电路程序,强啊
  • qunxingw:普中,51 A6正常测试
  • zhouwenyuan:博主可以开发房产APP吗?
  • qunxingw:结合附件,在分表A或B...实验一下宏就理解了