• 785. 快速排序


    给定你一个长度为n的整数数列。

    请你使用快速排序对这个数列按照从小到大进行排序。

    并将排好序的数列按顺序输出。

    输入格式

    输入共两行,第一行包含整数 n。

    第二行包含 n 个整数(所有整数均在1~109109范围内),表示整个数列。

    输出格式

    输出共一行,包含 n 个整数,表示排好序的数列。

    数据范围

    1n1000001≤n≤100000

    输入样例:

    5
    3 1 2 4 5
    

    输出样例:

    1 2 3 4 5
    第一种情况:
    #include<iostream>
    
    using namespace std;
    
    const int N = 1e5 + 10;
    
    int q[N];
    int n;
    
    void query_sort(int q[],int l,int r){
        if(l>=r) return;
        int i = l - 1,j = r + 1,x = q[r+l >> 1];
        while(i < j){
            do i++;while(q[i] < x);
            do j--;while(q[j] > x);
            if(i < j) swap(q[i],q[j]);
        }
        query_sort(q,l,j);
        query_sort(q,j+1,r);
    }
    
    int main(){
        int n;
        cin >> n;
        for(int i = 0;i < n;i++){
            cin >> q[i];
        }
        query_sort(q,0,n - 1);
        for(int i = 0;i < n;i++){
            cout << q[i] << " ";
        }
        return 0;
    }
    

      

    //第二种
    #include<iostream>
    
    using namespace std;
    
    const int N = 1e5 + 10;
    
    int q[N];
    int n;
    
    void query_sort(int q[],int l,int r){
        if(l>=r) return;
        int i = l - 1,j = r + 1,x = q[l];
        while(i < j){
            do i++;while(q[i] < x);
            do j--;while(q[j] > x);
            if(i < j) swap(q[i],q[j]);
        }
        query_sort(q,l,j);
        query_sort(q,j+1,r);
    }
    
    int main(){
        int n;
        cin >> n;
        for(int i = 0;i < n;i++){
            cin >> q[i];
        }
        query_sort(q,0,n - 1);
        for(int i = 0;i < n;i++){
            cout << q[i] << " ";
        }
        return 0;
    }
    

      

    //第三种
    #include<iostream>
    
    using namespace std;
    
    const int N = 1e5 + 10;
    
    int q[N];
    int n;
    
    void query_sort(int q[],int l,int r){
        if(l>=r) return;
        int i = l - 1,j = r + 1,x = q[r];
        while(i < j){
            do i++;while(q[i] < x);
            do j--;while(q[j] > x);
            if(i < j) swap(q[i],q[j]);
        }
        query_sort(q,l,i - 1);
        query_sort(q,i,r);
    }
    
    int main(){
        int n;
        cin >> n;
        for(int i = 0;i < n;i++){
            cin >> q[i];
        }
        query_sort(q,0,n - 1);
        for(int i = 0;i < n;i++){
            cout << q[i] << " ";
        }
        return 0;
    }
    

      

  • 相关阅读:
    [转]为什么匿名内部类参数必须为final类型
    [转]软件开发规范—模块开发卷宗(GB8567——88)
    [转]概要设计与详细设计的区别
    [转]解析UML建模语言中的UML图分类、 UML各种图形及作用
    python mysql插入中文乱码
    pycharm mysql数据源配置、SQL方言配置
    pycharm批量查找替换,正则匹配
    python第三方库安装
    什么是Vagrant
    python读写excel文件
  • 原文地址:https://www.cnblogs.com/luyuan-chen/p/11664596.html
Copyright © 2020-2023  润新知