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

快速排序的C++版

复制代码
int Partition(int a[], int low, int high)
{
    int x = a[high];//将输入数组的最后一个数作为主元,用它来对数组进行划分
    int i = low - 1;//i是最后一个小于主元的数的下标
    for (int j = low; j < high; j++)//遍历下标由low到high-1的数
    {
        if (a[j] < x)//如果数小于主元的话就将i向前挪动一个位置,并且交换j和i所分别指向的数
        {
            int temp;
            i++;
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
    }
    //经历上面的循环之后下标为从low到i(包括i)的数就均为小于x的数了,现在将主元和i+1位置上面的数进行交换
    a[high] = a[i + 1];
    a[i + 1] = x;
    return i + 1;
}
void QuickSort(int a[], int low, int high)
{
    if (low < high)
    {
        int q = Partition(a, low, high);
        QuickSort(a, low, q - 1);
        QuickSort(a, q + 1, high);
    }
}
复制代码

 

partition函数的运行过程使用一个例子来帮助理解。对数组[6, 10, 10, 3, 7 ,1,8]运行一次Partition函数的过程如下图(有黄色填充的部分代表主元)所示:

其中i和j分别是程序当中的两个下标,j的作用是循环遍历,i的作用是指向小于主元的最后的一个数。当循环结束之后就将主元和i+1位置上面的数进行交换,这样就可以实现依据主元的大小对数组进行划分。

转载于:https://www.cnblogs.com/dancicici/p/9207646.html

相关文章:

  • 新建存过,查询表结构的方法。
  • 金额转换问题
  • jquery-5 jQuery筛选选择器
  • kettle学习笔记(九)——子转换、集群与变量
  • Django初始配置及大概扫阅
  • [转载]Delphi 版 everything、光速搜索代码
  • OO第四次博客作业
  • CentOS7网卡重启错误,配置IP方案
  • 真·面试题
  • 英语基础语法-时态(谓语动词的变化-一般时态/进行时态)
  • 安装mysql时出现应用程序无法正常启动(0xc000007b)、初始化失败以及密码忘记怎样重置?...
  • Java多线程(六) —— 线程并发库之并发容器
  • NEO VM原理及其实现(转载)
  • ES6的函数
  • review02
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • __proto__ 和 prototype的关系
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【面试系列】之二:关于js原型
  • CSS盒模型深入
  • Docker 笔记(2):Dockerfile
  • Javascript弹出层-初探
  • java取消线程实例
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • spring boot下thymeleaf全局静态变量配置
  • Spring核心 Bean的高级装配
  • tensorflow学习笔记3——MNIST应用篇
  • 编写符合Python风格的对象
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 面试总结JavaScript篇
  • 前端相关框架总和
  • 算法之不定期更新(一)(2018-04-12)
  • 小而合理的前端理论:rscss和rsjs
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 阿里云移动端播放器高级功能介绍
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (26)4.7 字符函数和字符串函数
  • (3)选择元素——(17)练习(Exercises)
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (南京观海微电子)——I3C协议介绍
  • (四) Graphivz 颜色选择
  • (原創) 未来三学期想要修的课 (日記)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET 常见的偏门问题
  • .net6+aspose.words导出word并转pdf
  • .net打印*三角形
  • .NET值类型变量“活”在哪?