当前位置: 首页 > article >正文

【C++】【算法基础】快速排序

快速排序

题目

用快速排序排序长度为 n n n的整数数列。

题解

快速排序的核心思想是分而治之:选定一个基准值,将数组分为两半,一边比其小,一边比其大,然后再次分别选定一个基准值,再次操作。

#include<iostream>
using namespace std;

void quickSort(int *a, int l, int r)
{
    if(l >= r) return ;
    int i = l - 1, j = r + 1, key = a[i + j >> 1];
    
    while(i < j)
    {
        do j --; while(a[j] > key);
        do i ++; while(a[i] < key);
        
        if(i < j) swap(a[i], a[j]);
    }
    
    quickSort(a, l, j);
    quickSort(a, j + 1, r);
}

int main()
{
    int n;
    cin >> n;
    int a[n];
    
    for(int i = 0; i < n; i ++)
        cin >> a[i];
    
    quickSort(a, 0, n - 1);
    for(int i = 0; i < n; i ++)
        cout << a[i] << " ";
    return 0;
}

http://www.kler.cn/a/386190.html

相关文章:

  • 使用python-Spark使用的场景案例具体代码分析
  • 【数据分享】全国农产品成本收益资料汇编(1953-2024)
  • 基于ssh得网上预约挂号系统的设计与实现
  • Mybatis配置文件的增删改查功能
  • python爬虫(二)爬取国家博物馆的信息
  • Flutter 小技巧之 OverlayPortal 实现自限性和可共享的页面图层
  • cocos creator 3.8.3物理组件分组的坑
  • RocketMQ部署教程
  • 力扣第39题:组合总和(C语言解法)
  • 基于springboot的作业管理系统设计与实现
  • Linux基础-1
  • Linux Centos7 如何安装图形化界面
  • LVSM: A LARGE VIEW SYNTHESIS MODEL WITH MINIMAL 3D INDUCTIVE BIAS 论文解读
  • (Go语言)Go基础的进阶知识!带你认识迭代器与类型以及声明并使用接口与泛型!
  • web实操2——idea创建普通web项目
  • FilterListener组件
  • SSH实验5密钥登录Linuxroot用户(免密登录)
  • NodeJS的安装 npm 配置和使用 Vue-cli安装 Vue项目介绍
  • 理解虚拟 DOM:Vue 的灵魂之处
  • 关于CountDownLatch失效问题
  • 量化交易系统开发-实时行情自动化交易-股票大资金动力指标
  • ROS2humble版本使用colcon构建包
  • Remix部署智能合约时报错:Gas estimation failed
  • lua ruturn 和goto
  • 【DL】YOLO11 OBB目标检测 | 模型训练 | 推理
  • 鸿蒙系统崛起:机遇、挑战与未来展望