zoukankan      html  css  js  c++  java
  • P1177 【模板】快速排序


    P1177 【模板】快速排序



    时间限制 3.00s
    内存限制 125.00MB


    题目描述


    利用快速排序算法将读入的\(N\)个数从小到大排序后输出。

    快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++选手请不要试图使用 STL,虽然你可以使用 sort 一遍过,但是你并没有掌握快速排序算法的精髓。)


    输入格式


    第 1 行为一个正整数\(N\),第 2 行包含\(N\)个空格隔开的正整数\(a_i\),为你需要进行排序的数,数据保证了\(a_i\)不超过\(10^9\)


    输出格式


    将给定的$N个数从小到大输出,数之间空格隔开,行末换行且无空格。


    输入输出样例


    输入 #1

    5
    4 2 4 5 1
    

    输出 #1

    1 2 4 4 5
    

    说明/提示


    对于\(20\%\)的数据,有\(N\leq 10^3\)

    对于\(100\%\)的数据,有\(N\leq 10^5\)



    快速排序


    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int N=1e5+5;
    int a[N];
    void quicksort(int l,int r){
    	int i=l,j=r,mid=a[i+j>>1];
    	while(i<=j){
    		while(a[i]<mid) ++i;
    		while(a[j]>mid) --j;
    		if(i<=j){
    			swap(a[i],a[j]);
    			++i;
    			--j;
    		}
    	}
    	if(l<j) quicksort(l,j);
    	if(i<r) quicksort(i,r);
    }
    int main(){
    	int n;
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i) scanf("%d",&a[i]);
    	quicksort(1,n);
    	for(int i=1;i<=n;++i) printf("%d ",a[i]);
    	return 0;
    }
    

    归并排序


    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int N=1e5+5;
    int a[N],t[N];
    void mergesort(int l,int r){
    	if(l==r) return;
    	int mid=l+r>>1;
    	mergesort(l,mid);
    	mergesort(mid+1,r);
    	int i=l,j=mid+1,p=l;
    	while(i<=mid&&j<=r){
    		if(a[i]>a[j])
    			t[p++]=a[j++];
    		else t[p++]=a[i++];
    	}
    	while(i<=mid) t[p++]=a[i++];
    	while(j<=r) t[p++]=a[j++];
    	for(int i=l;i<=r;++i) a[i]=t[i];
    }
    int main(){
    	int n;
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i) scanf("%d",&a[i]);
    	mergesort(1,n);
    	for(int i=1;i<=n;++i) printf("%d ",a[i]);
    	return 0;
    }
    
  • 相关阅读:
    事务管理
    QQ邮箱开启SMTP方法如何授权
    基于JavaMail的Java邮件发送:简单邮件发送
    Spring MVC 响应视图(六)
    Spring MVC 数据绑定 (四)
    Spring MVC Spring中的Model (五)
    Spring MVC 拦截器 (十)
    Spring MVC 异常处理 (九)
    Java 骚操作--生成二维码
    Java MD5校验与RSA加密
  • 原文地址:https://www.cnblogs.com/Potrem/p/Luogu_P1177.html
Copyright © 2011-2022 走看看