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

sort快排

当然可以!让我们通过类似的详细步骤来解释 快速排序(Quick Sort) 的原理和实现,就像之前解释 a &= (a - 1) 的原理一样。

快速排序(Quick Sort)原理

快速排序是一种高效的排序算法,其核心思想是分而治之。它通过选择一个“基准值”(pivot),将数组分为两部分:

  1. 一部分包含所有小于基准值的元素;

  2. 另一部分包含所有大于基准值的元素。

然后,对这两部分分别递归地进行快速排序,最终整个数组变得有序。


详细步骤

1. 选择基准值(Pivot)

快速排序的第一步是选择一个基准值。基准值的选择有多种方法:

  • 选择数组的第一个元素;

  • 选择数组的最后一个元素;

  • 选择数组的中间元素;

  • 随机选择一个元素。

2. 分区操作(Partition)

分区操作是快速排序的核心。它的目标是将数组分为两部分:

  • 所有小于基准值的元素移到基准值的左边;

  • 所有大于基准值的元素移到基准值的右边。

分区操作完成后,基准值位于其最终位置。

3. 递归排序

对基准值左边和右边的子数组分别递归地执行快速排序,直到子数组的大小为1或0,此时整个数组变得有序。


分区操作的详细解释

假设我们选择数组的最后一个元素作为基准值。分区操作的步骤如下:

  1. 初始化指针

    • i:指向小于基准值的元素的最后一个位置(初始为 left - 1)。

    • j:遍历数组的指针(从 leftright - 1)。

    • pivot:基准值(arr[right])。

  2. 遍历数组

    • 从左到右遍历数组,比较每个元素与基准值。

    • 如果 arr[j] < pivot,则将 arr[j]arr[i + 1] 交换,并将 i 向右移动一位。

    • 如果 arr[j] >= pivot,则跳过。

  3. 交换基准值

    • 遍历完成后,将基准值与 arr[i + 1] 交换,此时基准值位于其最终位置。


示例

假设我们有一个数组 arr = [9, 7, 5, 11, 12, 2, 14, 3, 10, 6],选择最后一个元素 6 作为基准值。

分区操作:
  1. 初始化

    • i = -1j = 0pivot = 6

  2. 遍历数组

    • j = 0arr[j] = 99 > 6,跳过。

    • j = 1arr[j] = 77 > 6,跳过。

    • j = 2arr[j] = 55 < 6,交换 arr[i + 1]arr[j]i = 0,数组变为 [5, 7, 9, 11, 12, 2, 14, 3, 10, 6]

    • j = 3arr[j] = 1111 > 6,跳过。

    • j = 4arr[j] = 1212 > 6,跳过。

    • j = 5arr[j] = 22 < 6,交换 arr[i + 1]arr[j]i = 1,数组变为 [5, 2, 9, 11, 12, 7, 14, 3, 10, 6]

    • j = 6arr[j] = 1414 > 6

相关文章:

sort快排

当然可以!让我们通过类似的详细步骤来解释 快速排序(Quick Sort) 的原理和实现,就像之前解释 a &= (a - 1) 的原理一样。 快速排序(Quick Sort)原理 快速排序是一种高效的排序算法,其核心思想是分而治之。它通过选择一个“基准值”(pivot),将数组分为两部分: …...

用xml配置spring, bean标签有哪些属性?

用xml配置spring, bean标签有哪些属性? 在Spring框架中&#xff0c;使用XML配置文件时&#xff0c;<bean>标签用于定义一个Bean。以下是一些常用的<bean>标签属性&#xff1a; 1. class 描述&#xff1a;指定Bean的类名。示例&#xff1a;<bean id"myBe…...

纪念日倒数日项目的实现-【纪念时刻-时光集】

纪念日/倒数日项目的实现## 一个练手的小项目&#xff0c;uniappnodemysql七牛云。 在如今快节奏的生活里&#xff0c;大家都忙忙碌碌&#xff0c;那些具有特殊意义的日子一不小心就容易被遗忘。今天&#xff0c;想给各位分享一个“纪念日”项目。 【纪念时刻-时光集】 一…...

无人机不等同轴旋翼架构设计应用探究

“结果显示&#xff0c;对于不等组合&#xff0c;用户应将较小的螺旋桨置于上游以提高能效&#xff0c;但若追求最大推力&#xff0c;则两个相等的螺旋桨更为理想。” 在近期的研究《不等同轴旋翼性能特性探究》中&#xff0c;Max Miles和Stephen D. Prior博士深入探讨了不同螺…...

1-8 gitee码云的注册与使用

码云的网址&#xff1a;Gitee - 基于 Git 的代码托管和研发协作平台 这是一个国内的托管代码平台&#xff0c;速度要比国外的快 1.0 注册 如何注册码云&#xff1f; 查考文章&#xff1a;https://jingyan.baidu.com/article/425e69e6a8cad6ff14fc1615.html 2.0 使用 使用码云进…...

嵌入式硬件篇---OpenMV的硬件流和软件流

文章目录 前言一、硬件流控制&#xff08;Hardware Flow Control&#xff09;1. 基本原理RTSCTS 2. OpenMV中的实现• 硬件要求• 代码配置• 工作流程 二、软件流控制&#xff08;Software Flow Control&#xff09;1. 基本原理XONXOFF 2. OpenMV中的实现• 代码配置• 工作流…...

Word 里面嵌入DeepSeek

目录 一、问题描述 二、解决方法 三、代码 四、注意事项 五、总结 一、问题描述 如何在Word里面嵌入DeepSeek? 二、解决方法 1、新建文档&#xff0c;按 AltF11&#xff0c;进入VB界面。 2、选中文档&#xff0c;右键->插入->模块。 3、进入模块&#xff0c;粘入…...

聊聊 IP 地址和端口号的区别

在计算机网络中&#xff0c;两个基本概念对于理解设备如何通过网络进行通信至关重要。IP 地址和端口号是 TCP/IP 的典型特征&#xff0c;其定义如下&#xff1a;IP 地址是分配给连接到网络的每台机器的唯一地址&#xff0c;用于定位机器并与其通信。相反&#xff0c;端口号用于…...

rust学习一、入门之搭建简单开发环境

1、搭建开发环境(windows11&#xff09; a.登录官网 一看就明白&#xff0c;此处略。 b.安装rustup 一看就明白&#xff0c;此处略。 c.安装 cargo script 或者 rust-script script cargo install cargo-script 完成后 注意&#xff1a;时间有一点点久。 测试 cargo s…...

浅聊MQ之Kafka与RabbitMQ简用

&#xff08;前记&#xff1a;内容有点多&#xff0c;先看目录再挑着看。&#xff09; Kafka与RabbitMQ的使用举例 Kafka的使用举例 安装与启动&#xff1a; 从Apache Kafka官网下载Kafka中间件的运行脚本。解压后&#xff0c;通过命令行启动Zookeeper&#xff08;Kafka的运行…...

【原创】解决vue-element-plus-admin无法实现下拉框动态控制表单功能,动态显隐输入框

前言 目前使用vue-element-plus-admin想要做一个系统定时任务功能&#xff0c;可以选择不同的定时任务类型&#xff0c;比如使用cron表达式、周期执行、指定时间执行等。每种类型对应不同的输入框&#xff0c;需要动态显隐输入框才行&#xff0c;但是这个vue-element-plus-adm…...

SpringBoot开发——初步了解SpringBoot

文章目录 一、SpringBoot简介 1、什么是Spring Boot2、Spring Boot的优点3、Spring Boot功能 二、Spring与Spring Boot对比三、Spring Boot与Spring MVC四、Spring Boot体系结构五、Springboot Initializr 1、Spring Initializr2、Spring Initializr模块 一、SpringBoot简介…...

双轴伺服电机驱动控制器AGV、AMR专用双伺服电机驱动控制器解决方案

工业机器人数控机床XY机械手双轴机器人堆垛机专用双轴伺服电机驱动控制器48V 14ARMS带有STO功能&#xff0c;隔离高压CAN/RS485/USB通讯支持编码器和霍尔输入 双伺服电机驱动控制器TMCM2611功能介绍 集成2个伺服电机的控制和驱动于一体供电电压48V&#xff0c;驱动电流14A RM…...

【VB语言】EXCEL中VB宏的应用

【VB语言】EXCEL中VB宏的应用 文章目录 [TOC](文章目录) 前言一、EXCEL-VB1.实验过程2.代码 二、EXCEL-VB 生成.c.h文件1.实验过程2.代码 四、参考资料总结 前言 1.WPS-VB扩展包 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、EXCEL-VB 1.实验过…...

Ubuntu添加桌面快捷方式

以idea为例 一. 背景 在ubuntu中&#xff0c;很多时候是自己解压的文件并没有桌面快捷方式&#xff0c;需要自己找到对应的目录的执行文件手动打开&#xff0c;很麻烦 而只需要在 /usr/share/applications 中创建自定义的desktop文件就能自动复制到桌面 二. 添加方法 创建desk…...

10G EPON光模块

一、10G EPON对称光模块 工作模式&#xff1a;上行突发接收、下行连续发射。 工作原理&#xff1a;当需要发送信号时&#xff0c;系统信号通过光模块的电接口把信号传送到驱动芯片&#xff0c;芯片处理后&#xff0c;驱动激光器发出调制光信号&#xff0c;经光纤发到远端&…...

Elasticsearch+Logstash+Kibana可视化集群部署

文章目录 1.组件介绍简述2.集群规划3.Es组件部署4.Logstash组件部署5.Kibana组件部署6.Kibana的基础使用 1.组件介绍简述 Elasticsearch&#xff1a;开源实时分布式搜索和分析引擎&#xff0c;支持大规模数据存储和高吞吐量&#xff0c;提供丰富的搜索功能和可扩展性。 Logsta…...

基于CanMV IDE 开发软件对K210图像识别模块的开发

简介 CanMV IDE 是一款专为 K210 芯片设计的图形识别 Python 软件&#xff0c;它提供了强大的功能&#xff0c;帮助开发者轻松实现基于 K210 芯片的图形识别应用。无论你是初学者还是经验丰富的开发者&#xff0c;CanMV IDE 都能为你提供便捷的开发环境和丰富的资源。 硬件资…...

win11系统 Docker Desktop提示Docker Engine stopped解决全过程记录

DockerDesktop安装指南以及Windows下WSL2和 Hyper-V相关问题追查 【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录 本篇文章主要记录Docker Desktop安装和使用时出现的问题及解决方法&#xff0c;以及后续使用夜神模拟器&#xff0c;关闭了Hyper-V时&am…...

工作室如何实现一机一IP

对于工作室而言&#xff0c;多开游戏账号却是其运营模式的核心需求。他们通过大量囤积金币、资源&#xff0c;再将其变现来获取利润。在这种运营模式下&#xff0c;账号数量直接关系到工作室的收益&#xff0c;所以解决 IP 问题就成了手游工作室发展道路上的首要难题&#xff0…...

高德顺风车xck、an参数逆向

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包 内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;侵权通过头像私信或名字简介叫我删除博…...

OpenClaw用例库:构建自动化抓取与RPA应用的最佳实践指南

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“openclaw-use-cases”。光看名字&#xff0c;你可能会有点摸不着头脑&#xff0c;这“OpenClaw”到底是个啥&#xff1f;是新的开源框架&#xff0c;还是某个特定领域的工具&#xff1f;其实&#x…...

Twinny:免费离线的AI代码补全工具部署与调优指南

1. 项目概述&#xff1a;当AI代码助手遇上本地化如果你是一名开发者&#xff0c;最近可能已经对GitHub Copilot、Cursor这类AI编程助手产生了依赖。它们确实能极大地提升编码效率&#xff0c;但随之而来的&#xff0c;是每月不菲的订阅费用、对网络环境的依赖&#xff0c;以及将…...

从‘放苹果’到‘整数划分’:一个C++动态规划模板,帮你搞定一类组合数学问题

从组合数学到动态规划&#xff1a;构建可扩展的整数划分问题解决方案 在算法学习过程中&#xff0c;我们常常会遇到一类看似简单却蕴含深刻数学原理的问题——整数划分。这类问题不仅考察编程能力&#xff0c;更考验抽象思维和数学建模能力。想象一下&#xff0c;当你掌握了&qu…...

避坑指南:RK3288 Ubuntu系统备份中,替换rootfs.img后合成update.img失败的常见原因与解决

RK3288 Ubuntu系统备份合成失败深度排查指南&#xff1a;从rootfs.img到update.img的全链路分析 当你在RK3288平台上进行Ubuntu系统备份时&#xff0c;是否遇到过这样的困境&#xff1a;按照教程一步步操作&#xff0c;却在最后合成update.img阶段遭遇失败&#xff1f;本文将从…...

2026年天门财务新选择:专业服务,值得信赖!

在当前经济环境下&#xff0c;财务管理对于企业的成功至关重要。无论是初创企业还是成熟企业&#xff0c;都需要专业的财务团队来帮助他们处理复杂的财务问题。天门市大掌柜财务咨询有限公司&#xff08;以下简称“大掌柜”&#xff09;作为一家专业的财务咨询公司&#xff0c;…...

第38篇:Vibe Coding时代:LangGraph + 代码静态检查实战,解决 AI 代码风格混乱和潜在 Bug 问题

第38篇:Vibe Coding时代:LangGraph + 代码静态检查实战,解决 AI 代码风格混乱和潜在 Bug 问题 一、问题场景:AI 生成代码能跑,但格式和质量很不稳定 AI 生成代码常见问题: 1. import 顺序混乱 2. 未使用变量 3. 函数太长 4. 类型标注缺失 5. 代码格式不统一 6. 潜在空值…...

Godot真实感水体渲染:从Gerstner波到着色器优化的完整指南

1. 项目概述与核心思路 如果你正在用Godot引擎捣鼓一个开放世界、海岛生存或者哪怕只是一个带水池的后院场景&#xff0c;大概率会卡在“水”这个环节上。默认的水体方案要么太“塑料”&#xff0c;要么性能开销大得吓人&#xff0c;自己从头写一个基于物理的着色器又仿佛在攀登…...

Translumo:打破语言障碍的终极实时屏幕翻译工具完整指南

Translumo&#xff1a;打破语言障碍的终极实时屏幕翻译工具完整指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否…...

AI工具搭建自动化视频生成LoHa

聊到AI视频生成&#xff0c;这两年圈子里变化真快&#xff0c;去年还在折腾逐帧生成接力的土办法&#xff0c;今年就已经出现了LoHa这种能把工作流压到单节点跑通的好东西。 要讲清楚LoHa是什么&#xff0c;先得理解它名字的由来。LoHa是“Low-Rank High-Adaptation”的缩写&am…...