美文网首页好文章NOIP普及组冲刺
noip普及组3:排序算法

noip普及组3:排序算法

作者: 很正常的事情哇 | 来源:发表于2019-07-11 19:53 被阅读0次

    排序算法

    ①冒泡排序:O(n^2)

    int n;cin>>n;
    
    for(int i=1;i<=n;i++)cin>>a[i];
    
    for(int i=1;i<n;i++)
        for(int j=i+1;j<=n;j++)
            if(a[j-1]>a[j])swap(a[j-1],a[j]);
    
    for(int i=1;i<=n;i++)cout<<a[i]<<' ';
    

    ②插入排序:O(n^2)

    int  n;cin>>n;
    
    for(int i=1;i<=n;i++)cin>>a[i];
    
    int t;
    for(int i=1;i<=n;i++){
        t=a[i];
    
        while(i&&a[i-1]>t){
            a[i]=a[i-1];i--;
        }
        a[i]=t;
    }
    
    for(int i=1;i<=n;i++)cout<<a[i]<<' ';
    

    ③选择排序:O(n^2)

    int n;cin>>n;
    
    for(int i=1;i<=n;i++)cin>>a[i];
    
    for(int i=1;i<n;i++){
        int minn=i;
    
        for(int j=i+1;j<=n;j++){
            if(a[minn]>a[i])minn=j;
    
        swap(a[i],a[minn]);
    }
    
    for(int i=1;i<=n;i++)cout<<a[i]<<' ';
    

    ④桶排序

    int n;cin>>n;
    
    memset(num,0,sizeof(num));
    for(int i=1;i<=n;i++){
        cin>>a[i];num[a[i]]++;
    }
    
    for(int i=1;i<=1000000;i++)
        if(num[i]!=0)
            for(int j=1;j<=num[i];j++)
                cout<<i<<' ';
    

    ⑤sort排序

    //从小到大
    bool cmp(int a,int b){return a<b;}
    sort(a+1,a+n+1,cmp);
    //从大到小
    bool cmp(int a,int b){return a>b;}
    sort(a+1,a+n+1,cmp);
    

    相关文章

      网友评论

        本文标题:noip普及组3:排序算法

        本文链接:https://www.haomeiwen.com/subject/etkjkctx.html