1 int Binary_Search(SeqList L, ElemType key){
2 int low = 0, high = L.length - 1, mid;
3 while(low < high){
4 mid = (low + high)/2; //取中间位置
5 if(L.elem[mid] == key)
6 return mid; //查找成功返回所在位置
7 else if(L.elem[mid] > key)
8 high = mid -1; //在前半部分查找
9 else
10 low = mid +1; //在后半部分查找
11 }
12 return -1; //查找失败
13 }
14
15 int BinarySearchRec(SeqList L, ElemType key, int low, int high){
16 if(low > high)
17 return -1; //判断数据合法性
18 mid = (low + high)/2; //取中间位置
19 if(L.elem[mid] > key)
20 BinarySearchRec(L,key,low,high-1); //在前半部分查找
21 else if(L.elem[mid] < key)
22 BinarySearchRec(L,key,low+1,high); //在后半部分查找
23 else
24 return mid; //查找成功返回所在位置
25 }