首页 > 分享 > C++代码实现有序数组插入并保持有序及优化

C++代码实现有序数组插入并保持有序及优化

列车调度(加了几个注释

最新推荐文章于 2022-05-30 23:21:12 发布

xinweiweixin 于 2020-10-08 22:07:31 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

https://blog.csdn.net/u014302425/article/details/79981435

/* #include<stdio.h> const int maxn=1e5+5; int main(){ int n; int a[maxn]; scanf("%d",&n); int k, len=0; while(n--){ scanf("%d",&k); if(len==0||k>a[len-1]){ a[len++]=k;//新轨道 } else { int l=0, r=len-1; while(l<r){ int mid=l+(r-l)/2; if(a[mid]>k) r=mid-1; else l=mid+1; } a[l]=k; } } printf("%d",len); return 0; } */ #include<stdio.h> #include<limits.h> #include<string.h> int n; int che[100001]; //che[]用于储存链尾序号 int N; int count =1;//总轨道数 int y; int foun(int n) { //与最后一个相比 if(n>che[count]) return 0; //下面这个感觉没必要 if(n<che[count]&&n>che[count-1]) return count; // for(y=1;y<=count;y++) if(n<che[y]) //检查能否插入 return y; } int main() { scanf("%d",&N); int i,k,a; memset(che,0,sizeof(che)); che[1]=INT_MAX; for(i=1;i<=N;i++) { scanf("%d",&n); if(a=foun(n)) che[a]=n; //更新链尾序号 else //不可插入链尾,则创建新轨道 { count++; che[count]=n; } } printf("%d",count); }

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

#include<stdio.h> #include<set> using namespace std; int main() {int n,num;scanf("%d %d",&n,&num);set<int> s;s.insert(num);for(int i=1;i<n;i++){scanf("%d",&num);if(s.lower_bound(num)!=s.end()){s.erase(s.lower_bound(num));}s.insert(num);}printf("%d",s.size());return 0; }

1234567891011121314151617181920

理论上来说,用vector后upper_bound更快一些
g++ -DONLINE_JUDGE -fno-tree-ch -O2 -Wall -std=c++14 -pipe $src -lm -o $exe
开O2优化,PTA

相关知识

GuoSmallGuo23
花授粉优化算法及代码实现
C++做的玫瑰花
vbs玫瑰花表白代码带音乐?简单的病毒编程代码
python画栀子花代码
C++控制台渲染一朵逼真的玫瑰花
c++ TCHAR转string导致中文缺失或乱码问题及解决
探索C++之美:玫瑰花代码项目推荐
Python原生代码实现KNN算法(鸢尾花数据集)
C C++最新华为机试

网址: C++代码实现有序数组插入并保持有序及优化 https://m.huajiangbk.com/newsview1157979.html

所属分类:花卉
上一篇: 美丽宜居花城 活力全球城市
下一篇: 城市居住区景观设计说课.ppt免