首页 > 其他 > 详细

快排 [模板]

时间:2020-02-02 13:17:44      阅读:58      评论:0      收藏:0      [点我收藏+]

快排 [模板]

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N];

void quick_sort(int l,int r,int q[]){
    if(l >= r) return ;// 递归边界
    int base = q[l + r >> 1],i = l - 1,j = r + 1;// 基准设置为中点,先把两个指针扩两边
    while(i < j) {// 指针扩两边之后,do while 就可以避免边界问题
        do i ++;while(q[i] < base);
        do j --;while(q[j] > base);
        if(i < j) swap(q[i],q[j]);
    }// 区间划分是相对应的
    quick_sort(l,j,q);// l , j 或者 l , i - 1
    quick_sort(j + 1,r,q);// l ,j + 1 或者 l , i
}
int main(){
    int n;
    scanf("%d",&n);
    for(int i = 0;i < n; ++i) scanf("%d",&a[i]);
    quick_sort(0,n - 1,a);
    for(int i = 0;i < n; ++i) printf("%d ",a[i]);
    return 0;
}

快排 [模板]

原文:https://www.cnblogs.com/lukelmouse/p/12251726.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!