有序顺序表的二分查找的递归算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

有序顺序表的二分查找的递归算法。

#include

#include

#include

#include

#include

using namespace std;

#define maxsize 100

#define overflow -2

typedef int ElemType;

typedef int Status;

typedef struct SqList

{

ElemType *elem;

int length;

}SqList;

int Search(SqList l, ElemType key, int low, int high) {

int mid;

if(low > high)

return -1;

else

{

mid = (low+high)/2;

if(l.elem[mid] == key)

return mid;

if(l.elem[mid] > key)

return Search(l, key, low, mid-1);

else

return Search(l, key, mid+1, high);

}

}

void InitList_Sq(SqList &l){

int len;

int data;

l.elem=(ElemType *)malloc(l.length*sizeof( ElemType));

if(!l.elem)exit(overflow);

cout<<"请输入顺序表的长度: ";

cin>>len;

l.length=len;

cout<<"请输入顺序表的数据:"<

for(int i = 0; i < l.length; i++)

scanf("%d", &l.elem[i]);

}

int main()

{

int k;

ElemType key;

SqList l;

InitList_Sq(l);

cout<<"请输入关键字:";

scanf("%d", &key);

if((k =Search(l, key, 0, l.length-1)) != -1)

printf("%d在线性表的第 %d 个位置。\n", key, k+1); else

cout<<"未找到指定元素"<

system("pause");

return 0;

}

相关文档
最新文档