其中List结构定义如下:
typedef int Position;
typedef struct LNode *List;
struct LNode {
ElementType Data[MAXSIZE];//增序
Position Last; /* 保存线性表中最后一个元素的位置 */
};
函数接口定义:
Position BinarySearch( List L, ElementType X );
X为要查找的元素。
非递归实现
代码:
Position BinarySearch(List L, ElementType X) {
Position mid,start, end;
start = 1;
end = L->Last;
mid = (1 + L->Last) / 2;
// if (X == L->Data[mid])
// return mid;
while (1) {
if (X == L->Data[mid])
return mid;
else if (X < L->Data[mid]) {
end = mid - 1;
mid = (start + end) / 2;
}
else if (X > L->Data[mid]) {
start = mid + 1;
mid = (start + end) / 2;
}
else {
}
if(start>end)
break;//这里注意退出条件!条件错误无法退出
}
return NotFound;
}