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

快速排序(C++实现)

基本思想

任取一个元素为中心,所有比它的元素一律前放,比他的元素一律后放,形成左右两个子表;对各子表重新选择中心元素并依此规则调整,直到每个子表的元素只剩一个

通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字都比两一部分记录的关键字小,则可对这两部分记录进行排序,以达到整个序列有序。

调试代码

#include <iostream>
#include <vector>
using namespace std;
int counter = 0;//调试用int Partition(vector<int>&vec, int low, int high)
{//首先以第一个元素的值作为枢轴的值,此时它所在的位置空出来,然后从后往前遍历,将第一个小于枢轴的值的元素放到空位int pivotVal = vec[low];   // 选取第一个元素的值作为枢轴的值while (low < high){while (low < high && vec[high] >= pivotVal) high--;   // 从后往前遍历,直到遇到比枢轴小的元素时停下swap(vec[low], vec[high]);while (low < high && vec[low] <= pivotVal) low++;    // 从前往后遍历,直到遇到比枢轴大的元素时停下swap(vec[low], vec[high]);}vec[low] = pivotVal;cout << "第" << ++counter << "趟: ";for (int i = 0; i < 11; i++)cout << vec[i] << "   ";cout << endl << endl;return low;
}
void quick_sort(vector<int>& vec, int low, int high)
{if (low < high){int pivot = Partition(vec, low, high);  // 确定枢轴的位置quick_sort(vec, low, pivot - 1);        // 对 左边子序列 递归排序quick_sort(vec, pivot + 1, high);       // 对 右边子序列 递归排序}
}
int main(int argc, const char* argv[])
{vector<int> vec = { 100, 1, 53, 5, 36, 7, 8, 109,  10, 11, 15 };cout << "待排序数组: ";for (int i = 0; i < 11; i++)cout << vec[i] << " ";cout << endl << endl;quick_sort(vec, 0, vec.size() - 1);cout << "结果: ";for (int i = 0; i < 11; i++)cout << vec[i] << " ";cout << endl << endl;return 0;
}
http://www.lryc.cn/news/493253.html

相关文章:

  • 【数据库知识】数据库关系代数表达式
  • linux系统清理全部python环境并重装
  • Servlet的介绍
  • DICOM医学影像应用篇——伪彩色映射 在DICOM医学影像中的应用详解
  • (超详细图文详情)Navicat 配置连接 Oracle
  • PyTorch:神经网络的基本骨架 nn.Module的使用
  • 学习threejs,使用CubeCamera相机创建反光效果
  • Linux网络——IO模型和多路转接
  • 【计网】自定义序列化反序列化(二) —— 实现网络版计算器【上】
  • 数据结构2:顺序表
  • python学习——元组
  • apache实现绑定多个虚拟主机访问服务
  • 无需插件,如何以二维码网址直抵3D互动新世界?
  • 系统思考—感恩自己
  • Java多线程详解①①(全程干货!!!) 实现简单的线程池 || 定时器 || 简单实现定时器 || 时间轮实现定时器
  • DAMODEL丹摩|部署FLUX.1+ComfyUI实战教程
  • 请求(request)
  • 关于VNC连接时自动断联的问题
  • C语言strtok()函数用法详解!
  • 【docker 拉取镜像超时问题】
  • 模拟手机办卡项目(移动大厅)--结合面向对象、JDBC、MYSQL、dao层模式,使用JAVA控制台实现
  • 机器学习—大语言模型:推动AI新时代的引擎
  • C++:探索哈希表秘密之哈希桶实现哈希
  • 具身智能高校实训解决方案——从AI大模型+机器人到通用具身智能
  • 【消息序列】详解(8):探秘物联网中设备广播服务
  • 【RL Base】强化学习核心算法:深度Q网络(DQN)算法
  • 深入浅出 Python 网络爬虫:从零开始构建你的数据采集工具
  • 美国发布《联邦风险和授权管理计划 (FedRAMP) 路线图 (2024-2025)》
  • Python语法基础(三)
  • 云计算之elastaicsearch logstach kibana面试题