【acwing总结】快速排序

原题链接

时间复杂度 nlogn

快排利用分治思想的原理

主要步骤有以下几种

(1):确认分界点

可以q[l] 可以是q[l+r] 可以是q[r],也可以是随机值

(2):调整区间

将小于等于分界点的,放到左边去,将大于分界点的放到右边去,

(3):递归的处理左右两边

模板代码 注意边界问题 经常来回顾

cpp 复制代码
#include<iostream>
using namespace std;

const int N= 100010;
int q[N];
void quick_sort(int q[],int l,int r)
{
    if( l>=r ) return;
    int k = q[(l+r)/2];
    int i = l-1, j =r+1;
    while(i<j)
    {
       do i++; while(q[i] < k) ;
       do j--; while(q[j] > k) ;
        if(i<j)swap(q[i],q[j]);
    }
    quick_sort(q,l,j);
    quick_sort(q,j+1,r);
}
int main()
{  
    int n;
    scanf("%d", &n);

    for(int i=0;i<n;i++)
    {
        scanf("%d",&q[i]);
    }
    quick_sort(q, 0, n-1);
    for(int i=0;i<n;i++)
    {
        printf("%d ",q[i]);
    }
    return 0;
    
}
相关推荐
_OP_CHEN几秒前
【算法基础篇】(三十七)图论基础之单源最短路:从原理到实战,4 大算法彻底吃透!
算法·图论
a程序小傲2 分钟前
京东Java面试被问:垃圾收集算法(标记-清除、复制、标记-整理)的比较
java·算法·面试
元亓亓亓9 分钟前
LeetCode热题100--118. 杨辉三角--简单
算法·leetcode·职场和发展
耶叶10 分钟前
查找算法学习总结2:代码分析篇
数据结构·学习·算法
StudyWinter24 分钟前
【c++】thread总结
开发语言·c++·算法
饕餮怪程序猿30 分钟前
贪心算法经典应用:活动选择问题(C++实现)
c++·算法·贪心算法
Han.miracle31 分钟前
数据库圣经-分析 MySQL 事务隔离级别与并发问题
数据结构·mysql·事务
光羽隹衡38 分钟前
决策树项目——电信客户流失预测
算法·决策树·机器学习
TL滕39 分钟前
从0开始学算法——第二十一天(高级链表操作)
笔记·学习·算法
CoovallyAIHub39 分钟前
无人机低空视觉数据集全景解读:从单机感知到具身智能的跨越
深度学习·算法·计算机视觉