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 }
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 }