不晓得哪个

二分搜索算法(迭代,递归)

 1 int bnsearch(int *array,int n,int value)
 2 {
 3     int left=0,right=n-1;
 4     while(left<=right)
 5     {
 6         int middle=(left+right)/2;
 7         if(array[middle]==value) return middle; 
 8         
 9         else if(value<array[middle])
10             right=middle-1;
11         else left=middle+1;
12     }
13     return -1;
14 }
15 int re_bnsearch(int *array,int left,int right,int value)
16 {
17     int middle = left + ((right - left) / 2) ;
18 
19     if(right<left)
20         return -1;
21     if(value<array[middle])
22     {
23         right=middle-1;
24         return re_bnsearch(array,left,right,value);
25     }
26     else if(array[middle]<value)
27     {
28         left=middle+1;
29         return re_bnsearch(array,left,right,value);
30     }
31     else return middle;
32 }

posted on 2010-02-22 15:14 缘分游走 阅读(280) 评论(0)  编辑 收藏 引用 所属分类: 算法基础


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理