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

快速排序:一种高效的排序算法

前言

排序是最基本和最常用的操作之一。无论是数据处理、搜索优化,还是各种应用程序的内部逻辑,排序算法的选择都直接影响到程序的性能。快速排序(Quick Sort)作为一种典型的分治算法,以其平均时间复杂度 O(n log n) 和优越的实际表现,成为了现代编程中最常用的排序算法之一。本篇博客将详细讲解快速排序。

一、快速排序的基本思想

快速排序采用了分治的策略。基本思想如下:
1.从数组中选择一个“基准元素”(通常选择数组的第一个元素、最后一个元素,或者随机选择一个元素)。
2.将数组分成两部分:小于基准元素的部分和大于基准元素的部分。
3.分别对这两部分继续递归进行排序。
4.最终得到一个有序数组。

二、快速排序的算法步骤

假设我们有一个数组,快速排序的过程如下:

1.选择基准元素:选择一个元素作为基准,通常是数组的第一个元素(或最后一个,或随机选取)。
2.分割过程:对数组进行重新排列,使得所有比基准元素小的元素排在基准元素的左侧,所有比基准元素大的元素排在右侧。
3.递归排序:递归地对基准元素左边和右边的子数组进行排序,直到子数组大小为1。

三、C++实现快速排序

代码展示

#include <iostream>
#include <vector>

using namespace std;

// 分割函数,将数组分成两部分,左边小于基准,右边大于基准
int partition(vector<int>& arr, int low, int high) {
   
    int pivot = arr[high]; // 选择基准元素为最后一个元素
    int i = low - 1; // i指向小于基准的区域的最后一个元素
    
    for (int j = low; j <= high - 1; j++) {
   
        if (arr[j] < pivot) {
   
            i++;
            swap(arr[i], arr[j]); // 将小于基准的元素交换到左边
        }
    }
    swap(arr[i + 1], arr[high]); // 将基准元素放到正确的位置
    return (i + 

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

相关文章:

  • 汽车定速巡航
  • vue3组件传值具体使用
  • 从理论到实践:Django 业务日志配置与优化指南
  • 微服务学习-Nacos 注册中心实战
  • kettle与Springboot的集成方法,完整支持大数据组件
  • Geek Uninstaller,绿色免安装轻量的应用卸载工具!
  • Python 预训练:打通视觉与大语言模型应用壁垒——Python预训练视觉和大语言模型
  • WPS计算机二级•表格保护与打印
  • 深入解析:使用 Python 爬虫获取苏宁商品详情
  • 总结 uniapp 上不适配iphone的:new Date 时间、border线条、渐变
  • 深入探索 Nginx 的高级用法:解锁 Web 服务器的强大潜能
  • 2. Flink分区策略
  • vue3的组件v-model(defineModel()宏)
  • 第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
  • 深度学习|表示学习|卷积神经网络|通道 channel 是什么?|05
  • 怎样使用树莓派自己搭建一套ADS-B信号接收系统
  • 栈和队列刷题篇
  • 新能源汽车充电桩选型以及安装应用
  • 2025.1.20——四、[强网杯 2019]Upload1 文件上传|反序列化
  • STM32——KEY按键
  • ETLCloud在iPaas中的是关键角色?
  • 若依 v-hasPermi 自定义指令失效场景
  • Java核心技术解析:泛型与类型安全全面指南
  • android wifi AsyncChannel(WifiManager和WifiP2pManager)
  • 【CS61A 2024秋】Python入门课,全过程记录P3(Week5 Sequences开始,更新于2025/1/23)
  • 韩国机场WebGIS可视化集合Google遥感影像分析