#include <iostream>
typedef struct{
int *elem; //元素存储空间基址
int TableLen;//长度
}SSTable;
int Binary_Search(SSTable L,int key)
{
int low = 0;
int high = L.TableLen-1;
int mid;
while(low<=high)
{
mid = (low + high)/2;
if(L.elem[mid] == key)
return mid;
else if (L.elem[mid]>key)
{
high = mid -1;
}
else
low = mid +1;
}
return -1;
}
//折半查找的递归算法
int BinSearchRec(SSTable ST,int key,int low,int high)
{
if(low>high)
return 0;
int mid = (low + high)/2;//取中间位置
if(key>ST.elem[mid])//向后查找
{
BinSearchRec(ST,key,mid+1,high);
}
else if(key<ST.elem[mid])//向前查找
{
BinSearchRec(ST,key,low,mid-1);
}
else //查找成功
return mid;
}
折半查找代码
最新推荐文章于 2025-01-16 23:49:32 发布
569

被折叠的 条评论
为什么被折叠?



