二分搜索是常用的搜索算法, 要求给定的元素集合非递减排序, 根据给定待查找元素, 查找其索引, 如果未找到, 返回-1.
代码为:
// 二分搜索
5 // @pre : a非递减序, 且长度为len
6 // @post: 返回x在a中的索引或-1
7 int binary_search(int a[], int len, int x)
8 {
9 if (len <= 0) return -1;
10
11 if (a[len/2] == x) return len/2;
12
13 if (a[len/2] > x)
14 return binary_search(a, len/2, x);
15 else
16 return len/2 + 1 + binary_search(a+len/2+1, len/2-1, x);
17 }