递归和非递归的二分查找:
//非递归二分查找算法/*list:待查找的有序数组 *key:需要查找的元素 *n:数组长度 *return:返回查找的位置下标,返回-1表示未找到 */int binarySearch(element list[], element key, int n){ int left =0; int right = n-1; int mid=0; while(left <= right)// <=,不能遗漏等于的情况 { mid=(left+right)/2; if(list[mid] == key) return mid; else if(list[mid] < key) left=mid+1; else right=mid-1; } return -1;}//递归二分查找算法/*list:待查找的有序数组 *key:需要查找的元素 *left:数组下界 *right:数组上界 *return:返回查找的位置下标,返回-1表示未找到 */int binarySearch2(element list[], element key, int left, int right){ int mid=0; if(left<=right)// <=,不能遗漏等于的情况 { mid=(left+right)/2; if(list[mid] == key) return mid; else if(list[mid] < key) return binarySearch2(list, key, mid+1, right); else return binarySearch2(list, key, left, mid-1); }else{ return -1;/*注意如果没有这种情况,返回值是永远是 mid,*/ }}