zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    linux命令(14):ifup/ifdown/ip addr命令
    linux命令(13):kill/killall命令
    linux命令(12):ping命令
    linux命令(11):df命令
    linux命令(9):route命令
    npm安装node-sass报msbuild相关错误的解决办法
    'vue-cli-service' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    redis发布与订阅的实现
    设计模式-工厂模式
    设计模式的介绍
  • 原文地址:https://www.cnblogs.com/luyuan-chen/p/11664596.html
Copyright © 2011-2022 走看看