先给出不会用到的三大排序的实现,时间复杂度O(n^2)
冒泡排序
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
for(int j=0;j<n-i-1;j++)
{
if(a[j+1]<a[j])
{
int Swap;
Swap=a[j+1];
a[j+1]=a[j];
a[j]=Swap;
continue;
}
}
for(int i=0;i<n;i++)
cout<<a[i]<<' ';
cout<<'\n';
return 0;
}
选择排序
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
{
int Min=2e9;
for(int j=i;j<n;j++)
if(Min>a[j])
{
Min=a[j];
int Swap;
Swap=a[j];
a[j]=a[i];
a[i]=Swap;
continue;
}
}
for(int i=0;i<n;i++)
cout<<a[i]<<' ';
cout<<'\n';
return 0;
}
插入排序
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=1;i<n;i++)
{
int now=a[i];
int j;
for(j=i-1;j>=0;j--)
{
if(a[j]>now)
a[j+1]=a[j];
else break;
}
a[j+1]=now;
}
for(int i=0;i<n;i++)
cout<<a[i]<<' ';
cout<<'\n';
return 0;
}
题解:
A题:
#include <bits/stdc++.h>
#define _ 0
int a[2000010];
int main()
{
int n,m;std::cin>>n>>m;
int i=0;
while(std::cin>>a[i])
i-=0xffffffff;
std::sort(a,a+i);
for(int j=0;j<i;j++)
std::cout<<a[j]<<' ';
std::cout<<'\n';
return (0^_^0);
}
B题:
#include <bits/stdc++.h>
#define _ 0
const int N=1e5+10;
int a[N];
int main()
{
int n;std::cin>>n;
for(int i=0;i<n;i-=0xffffffff)
std::cin>>a[i];
std::sort(a,a+n);
for(int j=0;j<n;j++)
std::cout<<a[j]<<' ';
std::cout<<'\n';
return (0^_^0);
}
C题:
#include <bits/stdc++.h>
using namespace std;
#define _ 0
const int N=5e6+10;
int a[N];
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,oput;cin>>n>>oput;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
int cnt=-1;
for(int i=0;i<n;i++)
{
cnt++;
if(oput==cnt)
{
cout<<a[i];
return (0^_^0);
}
}
}
D题:
#include <bits/stdc++.h>
using namespace std;
#define _ 0
const int N=1e3+10;
vector<int> a;
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n;cin>>n;
for(int i=0;i<n;i++)
{
int x;cin>>x;
a.push_back(x);
}
sort(a.begin(),a.end());
a.erase(unique(a.begin(),a.end()),a.end());
cout<<a.size()<<'\n';
for(int i:a)
cout<<i<<' ';
return (0^_^0);
}
E题:
#include <bits/stdc++.h>
const int N=2e4+10;
int a[N];
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int sum=0;
int n,high;std::cin>>n>>high;
for(int i=0;i<n;i++)
std::cin>>a[i];
std::sort(a,a+n,cmp);
int cnt;
for(cnt=0;sum<high;cnt++)
sum+=a[cnt];
std::cout<<cnt;
return 0;
}
F题:
#include <iostream>
#include <algorithm>
const int N=1e3+10;
int a[N],dtl[N];
int main()
{
int jdg=1;
int n;std::cin>>n;
for(int i=0;i<n;i++)
std::cin>>a[i];
for(int i=0;i<n-1;i++)
dtl[i]=abs(a[i]-a[i+1]);
std::sort(dtl,dtl+n);
for(int i=0;i<n-2;i++)
{
if(dtl[i]!=dtl[i+1]&&(dtl[i+1]-1)!=dtl[i])
{
jdg=0;
break;
}
}
if(jdg)
std::cout<<"Jolly";
else
std::cout<<"Not jolly";
return 0;
}
G题:
#include <iostream>
const int N=1e2+10;
int a[N];
int main()
{
int cnt=0;
while(std::cin>>a[cnt++]);
cnt--;
int time=1;
for(int i=0;i<cnt;i++)
for(int j=0;j<cnt-i-1;j++)
{
if(a[j+1]<a[j])
{
int Swap;
Swap=a[j+1];
a[j+1]=a[j];
a[j]=Swap;
continue;
}
}
for(int i=0;i<cnt;i++)
{
if(time)
{
std::cout<<a[i];
time=0;
}
else
std::cout<<' '<<a[i];
}
return 0;
}
H题:
#include<bits/stdc++.h>
using namespace std;
const int N=5e2;
int a[N];
int main()
{
int fi=1;
int n;cin>>n;
int i=0;
for(int j=0;j<n;j++)
{
int x;cin>>x;
if(x%2!=0)
a[i++]=x;
}
sort(a,a+i);
for(int j=0;j<i;j++)
if(fi)
{
cout<<a[j];
fi=0;
}
else
{
cout<<','<<a[j];
}
return 0;
}
I题:
#include<bits/stdc++.h>
using namespace std;
const int N=20;
int a[N],b[N];
int i,p;
bool cmp(int a, int b)
{
return a>b;
}
int main()
{
int fi=1;
for(int j=0;j<10;j++)
{
int x;cin>>x;
if(x%2!=0)
a[i++]=x;
else
b[p++]=x;
}
sort(a,a+i,cmp);
sort(b,b+p);
for(int j=0;j<i;j++)
if(fi)
{
cout<<a[j];
fi=0;
}
else
{
cout<<' '<<a[j];
}
for(int j=0;j<p;j++)
if(fi)
{
cout<<b[j];
fi=0;
}
else
{
cout<<' '<<b[j];
}
return 0;
}
J题:
#include <bits/stdc++.h>
using namespace std;
const int N=1e2+10;
struct str{
char str[210];
int num;
int id;
}s[N];
bool cmp(str a, str b)
{
if(a.num!=b.num)
return a.num<b.num;
else
return a.id<b.id;
}
int main()
{
int fi=1;
int n;cin>>n;
for(int i=0;i<n;i++)
{
cin>>s[i].str;
s[i].id=i;
}
for(int i=0;i<n;i++)
for(int j=0;j<strlen(s[i].str);j++)
if(s[i].str[j]=='1')
s[i].num++;
sort(s,s+n,cmp);
for(int i=0;i<n;i++)
if(fi)
{
cout<<s[i].str;
fi=0;
}
else
cout<<'\n'<<s[i].str;
return 0;
}
K题:
#include <bits/stdc++.h>
using namespace std;
const int N=45;
double man[N],woman[N];
int p,q;
bool cmp(double a,double b)
{
return a>b;
}
int main()
{
int fi=1;
int n;cin>>n;
for(int i=0;i<n;i++)
{
char scan[10];
cin>>scan;
if(scan[0]=='m')
cin>>man[p++];
else
cin>>woman[q++];
}
sort(man,man+p);
sort(woman,woman+q,cmp);
for(int i=0;i<p;i++)
if(fi)
{
fi=0;
printf("%.2f",man[i]);
}
else
printf(" %.2f",man[i]);
for(int i=0;i<q;i++)
if(fi)
{
fi=0;
printf("%.2f",woman[i]);
}
else
printf(" %.2f",woman[i]);
return 0;
}
L题:
#include <bits/stdc++.h>
using namespace std;
const int N=110;
struct msg{
char ID[20];
int id;
int age;
}m[N];
bool cmp(msg a,msg b)
{
if(a.age==b.age)
return a.id<b.id;
else if(a.age>=60)
return a.age>b.age;
else if(b.age>=60)
return a.age>b.age;
else
return a.id<b.id;
}
int main()
{
int fi=1;
int n;cin>>n;
for(int i=0;i<n;i++)
{
cin>>m[i].ID>>m[i].age;
m[i].id=i;
}
sort(m,m+n,cmp);
for(int i=0;i<n;i++)
if(fi)
{
cout<<m[i].ID;
fi=0;
}
else
cout<<'\n'<<m[i].ID;
return 0;
}
M题:
#include <bits/stdc++.h>
using namespace std;
char atc[310];
int num[310];
int cnt;
int Size(int n)
{
int cnt=0;
while(n>0)
{
n/=10;
cnt++;
}
return cnt;
}
int main()
{
fgets(atc,sizeof(atc),stdin);
for(int i=0;i<strlen(atc);)
{
if(atc[i]=='0')
{
sscanf(&atc[i],"%d",&num[cnt++]);
i+=Size(num[cnt-1])+1;
}
else if(atc[i]>'0'&&atc[i]<='9')
{
sscanf(&atc[i],"%d",&num[cnt++]);
i+=Size(num[cnt-1]);
}
else i+=1;
}
sort(num,num+cnt);
for(int i=0;i<cnt;i++)
printf(",%d"+!i,num[i]);
if(cnt==0)
printf("0");
return 0;
}
N题:
#include <bits/stdc++.h>
using namespace std;
const int N=1e2+10;
struct dna{
char dna[55];
int cnt,id;
}a[N];
int jdg(char a[])
{
int cnt=0;
for(int i=0;i<strlen(a);i++)
for(int j=i+1;j<strlen(a);j++)
if(a[i]>a[j])cnt++;
return cnt;
}
bool cmp(dna a,dna b)
{
if(a.cnt!=b.cnt)
return a.cnt<b.cnt;
else
return a.id<b.id;
}
int main()
{
int n,m;cin>>n>>m;
for(int i=0;i<m;i++)
{
cin>>a[i].dna;
a[i].id=i;
a[i].cnt=jdg(a[i].dna);
}
sort(a,a+m,cmp);
for(int i=0;i<m;i++)
{
printf("\n%s"+!i,a[i].dna);
}
return 0;
}
O题:
#include <bits/stdc++.h>
using namespace std;
const int N=1e2+10;
struct per{
char name[100];
int s;
}a[N];
bool cmp(per a,per b)
{
return a.s<b.s;
}
int main()
{
int n,k;cin>>n>>k;
for(int i=0;i<n;i++)
cin>>a[i].name>>a[i].s;
sort(a,a+n,cmp);
cout<<a[k-1].name;
return 0;
}
P题:
#include <bits/stdc++.h>
using namespace std;
const int N=1e2+10;
struct S{
char str[266];
int len,num1;
}a[N];
int Cnt(char a[])
{
int cnt=0;
for(int i=0;i<strlen(a);i++)
if(a[i]=='1')
cnt++;
return cnt;
}
bool cmp(S a,S b)
{
if(a.len!=b.len)
return a.len<b.len;
else if(a.num1!=b.num1)
return a.num1<b.num1;
else
return strcmp(a.str,b.str)<0;
}
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i].str;
a[i].len=strlen(a[i].str);
a[i].num1=Cnt(a[i].str);
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
printf("\n%s"+!i,a[i].str);
}