有序顺序表的二分查找的递归算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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; }