算法(62)-荷兰国旗-快排(详解+代码)

2023-11-07

 
问题1:



 问题二:


 代码
 

//l:左值下标
//r:右值下标
//q:区分值
int[] partition(int[] arr, int l, int r, int p) 
{
		int less = l - 1;  //<区的右边界  下标 初始值
		int more = r + 1;  //>区的左边界  下标 初始值
		while (l < more)   //l 当前数的下标
        { 
			if (arr[l] < p)       //1.<区分值
            {
				swap(arr, ++less, l++);
			} 
            else if (arr[l] > p) //2.>区分值
            {
				swap(arr, --more, l);
			} 
            else                 //3.==
            {
				l++;
			}
		}
		return new int[] { less + 1, more - 1 };
	}
//++a
返回值 a+1
自身值 +1
int a=4
int b=++a  
//b=5 a=5
//a++
返回值 a
自身值 +1
int a=4
int b=a++;  
//b=4,a=5

 快排:

void quickSort(int[] arr, int l, int r) {
		if (l < r) {
			swap(arr, l + (int) (Math.random() * (r - l + 1)), r);
			int[] p = partition(arr, l, r);
			quickSort(arr, l, p[0] - 1); //<区
			quickSort(arr, p[1] + 1, r); //>区
		}
	}
 int[] partition(int[] arr, int l, int r) {
		int less = l - 1; //<区边界
		int more = r;     //>区边界
		while (l < more) {  //l 当前值
			if (arr[l] < arr[r]) //1.当前值 < 区分值
            {
				swap(arr, ++less, l++);
			} 
           else if (arr[l] > arr[r]) //2.当前值 > 区分值
            {
				swap(arr, --more, l);
			} 
            else            //3.当前值 == 区分值 
            {
				l++;
			}
		}
		swap(arr, more, r);
		return new int[] { less + 1, more };
	}











 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法(62)-荷兰国旗-快排(详解+代码) 的相关文章

随机推荐

  • out can't be used with non-varying FragColor

    因为片段着色器缺少glsl的版本号 加上版本号就可以了 version 330 不能缺少 in vec2 TexCoord0 out vec4 FragColor uniform sampler2D gSampler void main F
  • Intel E810 Advanced RSS介绍

    一 Advanced RSS的特性 Legacy的RSS是对普通五元组 src ip dst ip src port dst port protocol 进行哈希 而且默认情况下是对报文的五元组同时进行哈希 Intel E810对RSS做了
  • 元件科普之稳压管

    1 简述 稳压二极管 英文名称Zener diode 又叫齐纳二极管 利用PN结反向击穿状态 其电流可在很大范围内变化而电压基本不变的现象 制成的起稳压作用的二极管 此二极管是一种直到临界反向击穿电压前都具有很高电阻的半导体器件 在这临界击
  • SpringBoot 接入 ELK - 动态索引详解

    1 说明 1 docker环境需要java maven环境 检查这两个 java version mvn version 2 本次ELK是使用docker运行的 ELK极其耗内存 服务器内存在4G及以内的 不建议安转 2 Linux mav
  • 【场景生成与削减】基于蒙特卡洛法场景生成及启发式同步回带削减风电、光伏、负荷研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 相关知识 基于概率距离削减法 蒙特卡洛削减
  • 数组函数some()、every()用法

    这两个方法用的其实并不多 但遇到了还是记录一下 some every 是用于判断数组的 1 some 不创建新数组 不改变原数组 判断为true则马上return true 否则return false let arr 1 2 3 4 5
  • UE4中常用的C++关键字:override

    override 描述 override保留字表示当前函数重写了基类的虚函数 目的 1 在函数比较多的情况下可以提示读者某个函数重写了基类虚函数 表示这个虚函数是从基类继承 不是派生类自己定义的 2 强制编译器检查某个函数是否重写基类虚函数
  • LeetCode 547. 朋友圈数量--无向连通图

    解析 方法一 DFS 遍历所有人 对于每一个人 寻找他的好友 找到好友后再找这个好友的好友 这样深度优先遍历下去 设置一个visited记录是否已经遍历了这个人 因为如果m个人最多m个朋友圈 设置后visited后 相同的朋友圈会检测到vi
  • 记录一些遇见的bug——项目启动报错Parameter 1 of constructor in com.example.filter.SimpleGlobalFilter required a bea

    记录一些遇见的bug 项目启动报错Parameter 1 of constructor in com example filter SimpleGlobalFilter required a bean of type org springf
  • angular2.0最新版环境搭建与常见问题

    第一步 安装Node js npm 安装Node js的时候自动就安装了npm 第二部 安装npm 由于npm官网镜像访问太慢 我们使用淘宝的npm镜像 在node命令窗口 windows的cmd linux的终端 npm install
  • 八数码深度优先搜索_Part 05:深度与广度优先搜索

    这节课重点学习深度优先搜索算法 简称为 DFS 和广度优先搜索算法 简称为 BFS DFS 和 BFS 经常在算法面试题当中出现 在整个算法面试知识点中所占的比重非常大 应用最多的地方就是对图进行遍历 树也是图的一种 深度优先搜索 Dept
  • 转:【Python3网络爬虫开发实战】6.4-分析Ajax爬取今日头条街拍美图

    摘要 本节中 我们以今日头条为例来尝试通过分析Ajax请求来抓取网页数据的方法 这次要抓取的目标是今日头条的街拍美图 抓取完成之后 将每组图片分文件夹下载到本地并保存下来 1 准备工作 在本节开始之前 请确保已经安装好requests库 如
  • Android Studio 太卡解决方法

    第一种情况 C盘快要满了 自行解决 第二种 修改Java 虚拟机启动时的参数 用于限制最大堆内存 在Android Studio Help gt Edit Custom VM Option 打开 在这里加上 Xmx2g 或者 Xmx4g 如
  • 【机器人学】机器人开源项目KDL源码学习:(2)牛顿拉普森迭代法求机器人的数值解

    对于串联机器人来说 求逆解的难度要大于求正解 市面上的工业机器人一般是利用的是利用解析法求封闭解 机器人有封闭解是有条件的 Pieper法则 另一种求逆解的方法是利用迭代法求数值解 适用于不满足Pieper法则的构型 特别适用于运动学冗余的
  • K8s ❉ 报错cannot stat ‘/etc/kubernetes/admin.conf’

    现象 报错提示 cannot stat etc kubernetes admin conf No such file or directory 解决方式 从master节点拷贝过来 master节点执行 root master scp et
  • 相机标定精度研究

    张建贺实验设计 1 外参重复性精度测试 同内参 不同外参特征点 9选择4 组合 1 外参几乎没有什么重复性误差 只要4对都正确 则刚性匹配基本正确 解释 激光点云到相机 转换本身的刚性匹配 而相机坐标系到图像坐标系是非刚性匹配 不同内参 同
  • pytorch分布式卡住

    在一台 A100 的实验室用单机多卡的方式跑 MoCoGAN HD 时 发现其在跑到 main worker 打完这行的 log 之后就卡住不动 手动 Ctrl C Options G step 5 batchSize 4 beta1 0
  • 如何搭建一个大数据平台:从新项目到成熟阶段

    在业务增涨过程中 每个企业不知不觉积累积累了一些数据 无论数据是多是少 企业都希望让 数据说话 通过对数据的采集 存储 分析 计算最终提供对业务有价值信息 此时 大数据平台的搭建就是企业面临的问题 搭建大数据平台有哪些思路 怎么样的搭建路径
  • LSTM lstm时间序列预测 用电量预测 完整代码数据

    视频讲解 LSTM lstm用工业用电量预测 时间序列预测 完整代码数据 哔哩哔哩 bilibili 代码 导包 import pandas as pd import numpy as np import tqdm import datet
  • 算法(62)-荷兰国旗-快排(详解+代码)

    问题1 问题二 代码 l 左值下标 r 右值下标 q 区分值 int partition int arr int l int r int p int less l 1 lt 区的右边界 下标 初始值 int more r 1 gt 区的左边