顺序表应用6:有序顺序表查询
2016-07-27 11:08
337 查看
#include<iostream> #include<algorithm> using namespace std; const int maxn=20010; typedef struct { int *emue; int lengh; }lis; void initlist(lis *L)///顺åº�表å��å§�å�� { L->emue=new int [maxn]; L->lengh=0; } void creat(lis &L, int k)///建表 { L.lengh=k; for(int i=0;i<L.lengh;i++) { cin>>L.emue[i]; } } void del(lis &L, int k)///å� é�¤ { for(int i=k;i<L.lengh-1;i++) L.emue[i]=L.emue[i+1]; L.lengh--; } void loclist(lis &L)///é��å��å� é�¤ { for(int i=0;i<L.lengh-1;i++) for(int j=i+1;j<L.lengh;j++) { if(L.emue[i]==L.emue[j]) { del(L, j); j--; } } } void mov(lis &L, int n, int m)///移ä½� { for(int i=0;i<m;i++) L.emue[i+n]=L.emue[i]; } void creatdel(lis &L, int m)///边建边å� { L.emue=new int [m]; L.lengh=0; int num=0; int x, flag; while(num<m) { cin>>x; num++; if(L.lengh==0) { L.emue[0]=x; L.lengh++; } else { flag=1; for(int i=0;i<L.lengh;i++) { if(L.emue[i]==x) { flag=0; break; } } if(flag) { L.emue[L.lengh]=x; L.lengh++; } } } } int order(lis &L, int n) { int x, mid, low, high; cin>>x; low=0; high=n-1; while(low<=high) { mid=(low+high)/2; if(x>L.emue[mid]) low=mid+1; else if(x<L.emue[mid]) high=mid-1; else return mid; } return -1; } int main() { ios::sync_with_stdio(false); lis L; int m, n; cin>>n; initlist(&L); creat(L, n); cin>>m; while(m--) { int t; t=order(L, n); if(t==-1) cout<<"No Found!"<<endl; else cout<<t+1<<endl; } return 0; }
上个代码提交的时候需要看服务器的状态,也就是说得看脸。长得丑的就得超时,新改进了一下。
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=20010;
typedef struct
{
int *emue;
int lengh;
}lis;
void initlist(lis *L)///顺�表���
{
L->emue=new int [maxn];
L->lengh=0;
}
void creat(lis &L, int k)///建表
{
L.lengh=k;
for(int i=0;i<L.lengh;i++)
{
cin>>L.emue[i];
}
}
int order(lis &L, int l, int r, int x)
{
int mid, low, high;
low=l;
high=r;
if(low<=high)
{
mid=(low+high)/2;
if(x>L.emue[mid])
return order(L, mid+1, high, x);
else if(x<L.emue[mid])
return order(L, low, mid-1, x);
else
{
cout<<mid+1<<endl;
return 0;
}
}
else
{
cout<<"No Found!"<<endl;
return -1;
}
}
int main()
{
ios::sync_with_stdio(false);
lis L;
int m, n;
cin>>n;
initlist(&L);
creat(L, n);
cin>>m;
while(m--)
{
int t;
cin>>t;
order(L, 0, n-1, t);
}
return 0;
}
相关文章推荐
- Eclips加载不了rt.jar下面的sun.net.ftp.FtpClient类,解决方法
- UVA 11234-Expressions
- servlet
- 1分钟完成:linux定时清理日志
- 1092 A+B for Input-Output Practice (IV)
- Mac上面搭建web服务器
- xpath使用
- hdu 1847 Good Luck in CET-4 Everybody! (SG函数入门)
- js性能优化的小知识
- 活动H5 类型总结 啪啪啪哎哟A股你大爷啊
- 顺序表应用5:有序顺序表归并
- JSONModel源代码解析
- 1091 A+B for Input-Output Practice (III)
- sql Newid
- 解决webview.loadUrl()会加载系统浏览器
- C语言二维数组作为函数的参数
- Eclipse正则表达式
- redis window版本设置密码,但是无效的解决方案
- [windows操作系统]目录和文件相关操作
- LoadRunner 11 安装及破解