• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
香草味羊扒饭
博客园    首页    新随笔    联系   管理    订阅  订阅
785. 快速排序

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

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

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

输入格式

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

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

输出格式

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

数据范围

1≤n≤1000001≤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;
}

  

posted on 2019-10-13 01:07  香草味羊扒饭  阅读(232)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3