复习
2026-06-28 22:38:48
发布于:上海
昨天考了八级。过是过了,八十看命。终于可以开始复习了。为集训做准备。
———————————————————————————————————————————
计数排序
计数排序的时间复杂度为(是要排序的数的个数),应该算是时间复杂度最低的排序,但是也有相当的限制(),所以如果而不是就应该注意是否使用计数排序。
unique+排序
是一个用来去重的STL容器。在使用它之前,必须先使用对其进行排序。
1.数组
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+5;
int a[N];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n);
int* ed=unique(a+1,a+1+n);
int len=ed-a-1;
cout<<len<<'\n';
for(int i=1;i<=len;i++)cout<<a[i]<<" ";
return 0;
}
2.
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+5;
vector<int>v;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
int x;
cin>>x;
v.push_back(x);
}
sort(v.begin(),v.end());
auto ed=unique(v.begin(),v.end());
v.erase(ed,v.end());
cout<<v.size()<<'\n';
for(int i=0;i<v.size();i++)cout<<v[i]<<" ";
return 0;
}
结构体排序
一个比较简单的结构题模板
字符串排序
字符串排序的基本准则是挨个比每一位字符的码,而不比较长度。
大写字母小于小写字母。如果有别的要求需要自己在内定义。比如这道题需要定义长度排序。
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+5;
struct Node{
string a;
int b;
}node[N];
bool cmp(Node A,Node B){
if(A.a.size()!=B.a.size())return A.a.size()>B.a.size();
return A.a>B.a;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>node[i].a;
node[i].b=i;
}
sort(node+1,node+1+n,cmp);
cout<<node[1].b<<"\n"<<node[1].a<<'\n';
return 0;
}
这里空空如也

















有帮助,赞一个