• HDU1425 <sort 快排>


    给你n个整数,请按从大到小的顺序输出其中前m大的数。

    每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。<快排>

    //sort也可以过//936Ms
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int maxn=1000005;
    int ans[maxn];
    bool cmp(int a,int b)
    {
        return a>b;
    }
    int main ()
    {
        int n,m;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(int i=0;i<n;i++)
                scanf("%d",&ans[i]);
            sort(ans, ans+n, cmp);
            for(int i=0;i<m-1;i++)
                printf("%d ",ans[i]);
            printf("%d
    ",ans[m-1]);
        }
        return 0;
    }
    //快排1//873Ms
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int maxn=1000005;
    int ans[maxn];
    void quickSort(int l,int r)
    {
        if(l>=r)
            return ;
        int i,j;
        for(j=i=l+1;i<=r;i++)
            if(ans[i]>ans[l])
                swap(ans[i],ans[j++]);
        swap(ans[l],ans[--j]);
        quickSort(l, j-1);
        quickSort(j+1, r);
    }
    /*bool cmp(int a,int b)
    {
        return a>b;
    }*/
    int main ()
    {
        int n,m;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(int i=0;i<n;i++)
                scanf("%d",&ans[i]);
            //sort(ans, ans+n, cmp);
            quickSort(0, n-1);
            for(int i=0;i<m-1;i++)
                printf("%d ",ans[i]);
            printf("%d
    ",ans[m-1]);
        }
        return 0;
    }
    //快排2//982ms
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int maxn=1000005;
    int ans[maxn];
    void quickSort(int l,int r)
    {
        if(l>=r)
            return ;
        int left=l,right=r,temp=ans[left];
        while(left<right)
        {
            while(left<right&&ans[right]<=temp)
                right--;
            ans[left]=ans[right];
            while(left<right&&ans[left]>=temp)
                left++;
            ans[right]=ans[left];
        }
        ans[left]=temp;
        quickSort(l,left-1);
        quickSort(left+1, r);
    }
    /*bool cmp(int a,int b)
    {
        return a>b;
    }*/
    int main ()
    {
        int n,m;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(int i=0;i<n;i++)
                scanf("%d",&ans[i]);
            //sort(ans, ans+n, cmp);
            quickSort(0, n-1);
            for(int i=0;i<m-1;i++)
                printf("%d ",ans[i]);
            printf("%d
    ",ans[m-1]);
        }
        return 0;
    }
    //快排3//624Ms
    #include <iostream>
    #include <string.h>
    #include <cstdio>
    #include<algorithm>
    using namespace std;
    const int N=1000005;
    int num[N];
    int partition(int low,int high){
        int i=low,j=high,key=num[low];
        while(i<j){
            while(i<j&&num[j]>key)
                --j;
            swap(num[i],num[j]);
            //int t=num[i]; num[i]=num[j];num[j]=t;
            while(i<j&&num[i]<key)
                ++i;
            swap(num[i],num[j]);
            //t=num[i]; num[i]=num[j];num[j]=t;
            }
        return i;
    }
    void quick_sort(int low,int high){
        if(low<high){
            int x=partition(low,high);
            quick_sort(low,x-1);
            quick_sort(x+1,high);
        }
    }
    int main(){
        //freopen("11.txt","r",stdin);
        int n,m;
        while(~scanf("%d%d",&n,&m)){
            for(int i=0;i<n;++i)
                scanf("%d",&num[i]);
            quick_sort(0,n-1);
            for(int i=n-1;i>n-m;--i)
                printf("%d ",num[i]);
            printf("%d",num[n-m]);
            printf("
    ");
        }
        return 0;
    }


    想的太多,做的太少。
  • 相关阅读:
    SharePoint下载大文件失败 异常信息: system.OutOfMemoryException
    SharePoint Server 2010 容量管理:软件边界和限制
    PowerShell 备份sharepoint站点命令
    SharePoint 开发自定义WebService
    SPCAMLEditor 10分钟打造一个在线视频播放库
    使用PowerShell批量注册DLL到GAC
    设计模式之二 策略模式
    (转)Github上的热门iOS开源项目:AFNetworking、MagicalRecord、BlocksKit以及XVim
    (转)iOS开发常用的宏 大家一起来收集~
    (转)iOS开发资源:推送通知相关开源项目PushSharp、APNSPHP以及Pyapns等
  • 原文地址:https://www.cnblogs.com/pealicx/p/6115664.html
Copyright © 2020-2023  润新知