二分查找比較簡單,直接貼代碼:
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; /* 保存線性表中最後一個元素的位置 */
};
當然也可以用遞歸實現