具体题目可以查看这个博客中国mooc浙大数据结构习题01-复杂度3 二分查找(20 分)
typedef int Position;
typedef struct LNode *List;
struct LNode {
ElementType Data[MAXSIZE];
Position Last; /* 保存线性表中最后一个元素的位置 */
};
读入的数组被存储在结构体LNode中,结构体中有两个成员,一个是数组Data,另一个是Position型变量 Last,代表数组Data长度。
两个错误:
1.// 错把L->Data写成了L
2. //这个return是在while循环运行结束后才返回没找到,之前不小心放到了while循环中(果然循环容易出错)
Position BinarySearch( List L, ElementType X ){
int low = 1,high = L->Last, mid;
while(low <= high){
mid = low + (high-low)/2;
if(X < L->Data[mid]){ // 错把L->Data写成了L
high = mid - 1;
}
else if(X > L->Data[mid]){
low = mid + 1;
}
else{
return mid;
}
}
//这个return是在while循环运行结束后才返回没找到,之前不小心放到了while循环中
return NotFound;
}