#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10#define NotFound 0typedefint ElementType;typedefint Position;typedefstruct LNode *List;struct LNode {
ElementType Data[MAXSIZE];
Position Last;/* 保存线性表中最后一个元素的位置 */};
List ReadInput();/* 裁判实现,细节不表。元素从下标1开始存储 */
Position BinarySearch( List L, ElementType X );intmain(){
List L;
ElementType X;
Position P;
L =ReadInput();scanf("%d",&X);
P =BinarySearch( L, X );printf("%d\n", P);return0;}
Position BinarySearch( List L, ElementType X ){//如果表不为空,进入指令集;如果表为空,返回notfoundif(L ==NULL)return NotFound;//如果表的只有一个元素if(L->Last ==1)return(L->Data[L->Last]!= X)? NotFound:L->Last;/*表的元素个数大于1
进入查找指令集
二分查找
取mid = (left + right)/2
*/
Position lo =1,high = L->Last;
Position mid =(lo+high)/2;while(lo <= high){if(L->Data[mid]> X)
high = mid -1;elseif(L->Data[mid]< X)
lo = mid +1;elsereturn mid;
mid =(lo + high)/2;}return NotFound;}