二分查找比较简单,直接贴代码:
Position BinarySearch( List L, ElementType X ) {
Position left = 0;
Position right = L->Last;
Position mid;
while(left <= right) {
mid = (left+right)/2;
if ( L->Data[mid] == X) {
return mid;
}else if (L->Data[mid] < X) {
left = mid + 1;
}else {
right = mid - 1;
}
}
return NotFound;
}
其中:
typedef int Position;
typedef struct LNode *List;
struct LNode {
ElementType Data[MAXSIZE];
Position Last; /* 保存线性表中最后一个元素的位置 */
};
当然也可以用递归实现