您的位置:首页 > 其它

二分查找

2015-12-17 20:33 411 查看
#include <iostream>
#define maxn 1000
#define NoFound -1
using namespace std;

const int Record[]={5,16,39,45,51,98,100,202,226,321,368,444,501};

struct StaticTable{
int Data[maxn];
int Length;
};

StaticTable *CreateTable(){
StaticTable *PtrT=(StaticTable*)malloc(sizeof(StaticTable));
PtrT->Length=0;
return PtrT;
}

void TablePush(StaticTable *PtrT,int num){
PtrT->Data[++(PtrT->Length)]=num;
}

int BinarySearch(StaticTable *PtrT,int K){
int left,right,mid;
left=1;
right=PtrT->Length;
while(left<=right){
mid=(left+right)/2;
if(K<PtrT->Data[mid]){
right=mid-1;
}else if(K>PtrT->Data[mid]){
left=mid+1;
}else{
return mid;          //找到后返回下标
}
}
return NoFound;
}

int main()
{
StaticTable *Tbl=CreateTable();
for(int i=0;i<sizeof(Record)/sizeof(int);++i){
TablePush(Tbl,Record[i]);
}
int K;
cin>>K;
cout<<"Tbl->length = "<<Tbl->Length<<endl;
cout<<BinarySearch(Tbl,K);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: