水一下排序题解(

先给出不会用到的三大排序的实现,时间复杂度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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值