zoukankan      html  css  js  c++  java
  • $qsort$

    快排的基本思想: 
    1.先从数列中取出一个数作为基准数。 
    2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 
    3.再对左右区间重复第二步,直到各区间只有一个数。
    #include <iostream>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    inline ll read(){
        ll x=0,f=1; char ch=getchar();
        while(!isdigit(ch)) ch=='-'&(f=-1),ch=getchar();
        while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return x*f;
    }
    int n;
    const int N=1<<20;
    int a[N];
    signed main(){
        n=read();
        for(register int i=1;i<=n;i++) a[i]=read();
        sort(a+1,a+n+1);
        for(register int i=1;i<=n;i++) cout<<a[i]<<' ';
        return 0;
    }
    快排【滑稽】
    #include <iostream>
    using namespace std;
    typedef long long ll;
    inline ll read(){
        ll x=0,f=1; char ch=getchar();
        while(!isdigit(ch)) ch=='-'&(f=-1),ch=getchar();
        while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); return x*f;
    }
    int n;
    const int N=1<<20;
    int a[N];
    template<typename T>inline void qsort(T a[],int l,int r){
        if(l>=r) return ;
        T p=a[l];
        int i=l,j=r;
        while(i!=j){
            while(i<j and a[j]>=p) j--; swap(a[i],a[j]);
            while(i<j and a[i]<=p) i++; swap(a[i],a[j]);
        }
        qsort(a,l,i-1); qsort(a,i+1,r);
    }
    signed main(){
        n=read();
        for(register int i=1;i<=n;i++) a[i]=read();
        qsort(a,1,n);
        for(register int i=1;i<=n;i++) cout<<a[i]<<' ';
        return 0;
    }
    不存在十全十美的文章 如同不存在彻头彻尾的绝望
  • 相关阅读:
    Use Study Groups to Support Learning
    “开闭”原则(OpenClosed principle, OCP)
    我的E72i 开发
    conlution of daily work
    appstore相关查询链接
    sqlite3.0不支持的sql属性
    iOS sdk 运行时函数
    自动化测试部分
    ios下获取mac地址修正版
    修改mac os host
  • 原文地址:https://www.cnblogs.com/qf-breeze/p/10349089.html
Copyright © 2011-2022 走看看