您的位置:首页 > 其它

顺序查找和二分查找

2017-05-18 13:01 309 查看
点我进入新博客

/*
Copyright: 安徽大学计算机科学与技术学院
Author: 软件工程 杨磊
Description: 顺序查找和二分查找
#include<bits/stdc++.h>
using namespace std;
#define maxn 1000
typedef struct{
string value;
int key;
}node;
typedef struct{
node num[maxn];
int length;
}SSTable;
int CreatTable(SSTable &T,int n){
cout<<"Input the value and it's key in order"<<endl;
for(int i=1;i<=n;i++){
cout<<"Input the value ";
cin>>T.num[i].value;
cout<<"Input the key ";
cin>>T.num[i].key;
cout<<endl;
}
}
int InOrder_Search(SSTable T,int k){
int flag=0;
for(int i=1;i<=T.length;i++){
if(T.num[i].key==k){
flag=i;
break;
}
}
if(flag)
cout<<"It's value is "<<T.num[flag].value<<endl;
else
cout<<"Not find"<<endl;
}
int Binary_Search(SSTable &T,int k){
int l=1;
int r=T.length;

while(l<=r){
int mid=(l+r)/2;
if(T.num[mid].key==k)
return mid;
else if(T.num[mid].key>k)
r=mid-1;
else l=mid+1;
}
return 0;
}
int main(){
int n,Key;
SSTable T;
cout<<"Input the length of SSTable"<<endl;
cin>>n;
T.length=n;
CreatTable(T,n);
//InOrder_Search
cout<<"Input the key you want to find"<<endl;
cin>>Key;
InOrder_Search(T,Key);
//Binary_Search
int k;
cout<<"Input the key you want to find"<<endl;
cin>>k;
int flag=Binary_Search(T,k);
if(flag)
cout<<"It's value is "<<T.num[flag].value<<endl;
else
cout<<"Not find"<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 二分查找 安徽