C#算法(二)

       基本的二叉查找

第一種採用遞歸的方式;

第二種是迭代方式;

直接看代碼:

(VS2008中通過)

代码
 1  public int RbinSearch(int value, int low, int upper,int[] a)
 2         {
 3             if (low > upper) return -1;
 4             else
 5             {
 6                 int mid = (low + upper) / 2;
 7                 if (value < a[mid])
 8                     return RbinSearch(value, low, mid--,a);
 9                 else if (value == a[mid])
10                     return mid;
11                 else
12                     return RbinSearch(value, mid++, upper,a);
13 
14             }
15         }
16         public int RbinSearch2(int value,int[] a)
17         {
18             int mid, low, upper;
19             low = 0;
20             upper = a.Length - 1;
21             while (low < upper)
22             {
23                 mid =(low+upper)/2;
24                 if (value == a[mid]) return mid;
25                 else if (value > a[mid])
26                 {
27                     low = mid + 1;
28                     continue;
29                 }
30                 else
31                 {
32                     upper=mid -1;
33                     continue;
34                 }
35             }
36             return -1;
37         }
原文地址:https://www.cnblogs.com/Mayvar/p/wanghonghua200912081115.html