要求:
给定n个从小到大排好序的整数序列Data[]以及待查找整数X,找到X在Data[]中的下标
若Data[i]=X,则返回i,否则返回失败标志NotFound
二分法:
现在找到序列的中点Data[Mid],与X进行比较
若相等则返回中点下标Mid
若X<Data[Mid] ,则在左边的子序列中查找X
若X>Data[Mid],则在右边的子序列中查找X
递归实现代码:
#include<stdio.h>
#include<stdlib.h>
#define NotFound -1
#define MAXSIZE 100
//线性表的定义 (顺序存储)
typedef int Position;
typedef int ElementType;
typedef struct LNode *List;
struct LNode{
ElementType Data[MAXSIZE];
Position Last;//保证数组Data[]中最后一个元素的位置
};
//函数接口
Position BS(List L,ElementType X,Position Left,Position Right);
Position BinarySearch(List L,Elem