首页/新闻资讯/正文详情

十大排序算法之快速排序

发布时间:2026/9/24 13:35:17 来源:云帆数科 栏目:资讯中心
十大排序算法之快速排序
一.概念通过一趟排序将要排序的数据分割成独立的两部分其中一部分的所有数据都比另外一部分的所有数据都要小然后再按此方法对这两部分数据分别进行快速排序整个排序过程可以递归进行以此达到整个数据变成有序序列。二.步骤1、首先设定一个分界值通过该分界值将数组分成左右两部分。2、将大于或等于分界值的数据集中到数组右边小于分界值的数据集中到数组的左边。此时左边部分中各元素都小于或等于分界值而右边部分中各元素都大于或等于分界值。3、然后左边和右边的数据可以独立排序。对于左侧的数组数据又可以取一个分界值将该部分数据分成左右两部分同样在左边放置较小值右边放置较大值。右侧的数组数据也可以做类似处理。4、重复上述过程可以看出这是一个递归定义。通过递归将左侧部分排好序后再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后整个数组的排序也就完成了。三.图示示例快速排序主要有三个参数left 为区间的开始地址right 为区间的结束地址Key 为当前的开始的值。从待排序的记录序列中选取一个记录通常第一个作为基准元素称为keykeya[left]然后设置两个变量left指向数列的最左部right 指向数据的最右部key6565588810613left right第一步:key 首先与 a[right] 进行比较如果 a[right]key则a[left]a[right]将这个比key小的数放到左边去如果a[right]key则我们只需要将right--right--之后再拿a[right]与key进行比较直到a[right]key交换元素为止。key65135888106left right第二步如果右边存在a[right]key的情况将a[left]a[right]接下来将转向left端拿a[left ]与key进行比较如果a[left]key,则将a[right]a[left]如果a[left]key则只需要将left,然后再进行arr[left]与key的比较。key65135888106left right135888106left right135810688left right第三步然后再移动right重复上述步骤。key6513586510688left right第四步最后得到 {13 85} 65 {106 88 }再对左子数列与右子数列进行同样的操作。最终得到一个有序的数列。13 {58} 65 {88} 10613 58 65 88 106import java.util.*; import static java.util.Collections.swap; public class Main { public static void main(String[] args) { Scanner scan new Scanner(System.in); int n scan.nextInt(); int[] a new int[n]; for (int i 0; i n; i) { a[i]scan.nextInt(); } int xa.length-1; partition(a,0,x); for (int i 0; i n; i) { System.out.print(a[i] ); } } public static int[] partition(int[]a,int left,int right){ int xa[left]; int i left; int j right; while (ij) { while ((ij)(a[j]x)) { j--; } while ((ij)(a[i]x)) { i; } if ((ij)(a[i]a[j])) { i; } else { int temp a[i]; a[i] a[j]; a[j] temp; } } if (i-1left)apartition(a,left,i-1); if (j1right)apartition(a,j1,right); return (a); } }

相关推荐

AI Agent 脚手架装配域实战:ChatModelNode 模型对话节点的装配与流转设计
AI Agent 脚手架装配域实战:ChatModelNode 模型对话节点的装配与流转设计

文档教程后端 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助,请给予支持(关注、… · 2026/9/24 13:35:17

SAP PM 维护计划参数详解
SAP PM 维护计划参数详解

本文的主要目的是解释调度参数如何影响预防性维护中计划日期的计算——基于时 间的单周期计划。 调度参数: 我们直接在维护计划中维护单周期计划的调度参数,如下图 计划标识 是计算计划日期的依据: 时间: 月份的计算基础始终为 30 天;计算所有日历日。示例:周期 1 … · 2026/9/24 13:35:11

algorithm-base 数组篇:LeetCode 66「加一」——一次倒序遍历 + 取余判断,优雅处理全 9 进位
algorithm-base 数组篇:LeetCode 66「加一」——一次倒序遍历 + 取余判断,优雅处理全 9 进位

文档教程知识库 【免费下载链接】algorithm-base 一位酷爱做饭的程序员,立志用动画将算法说的通俗易懂。我的面试网站 www.chengxuchu.com 项目地址: https://gitcode.com/gh_mirrors/al/algorithm-base 点击查看 免费下载 本篇是 algorithm-base 仓库 … · 2026/9/24 13:35:11

Agent Substrate 路线图深度解读:从核心架构决策到高密度 Agent 运行时演进方向
Agent Substrate 路线图深度解读:从核心架构决策到高密度 Agent 运行时演进方向

人工智能AI AgentAgent 沙箱云原生容器运行时零信任 【免费下载链接】substrate Agent Substrate: the core system 项目地址: https://gitcode.com/GitHub_Trending/substrate7/substrate 点击查看 免费下载 Agent Substrate 是一个面向大规模 Agent 部署的高性能… · 2026/9/24 14:33:41

Hive Aden 工具集 Razorpay 支付集成实战:6 个 MCP 工具完成收款、开票与退款管理
Hive Aden 工具集 Razorpay 支付集成实战:6 个 MCP 工具完成收款、开票与退款管理

人工智能AI Agent多智能体MCP 服务工具调用浏览器控制 【免费下载链接】hive Multi-Agent Harness for Production AI 项目地址: https://gitcode.com/gh_mirrors/hive48/hive 点击查看 免费下载 本文以 Hive 开源仓库 tools 目录下的 Razorpay 支付工具为对象&… · 2026/9/24 14:33:15

FunClip使用指南:本地部署AI视频剪辑,3步把2小时会议录像变成精华片段
FunClip使用指南:本地部署AI视频剪辑,3步把2小时会议录像变成精华片段

FunClip使用指南:本地部署AI视频剪辑,3步把2小时会议录像变成精华片段 【免费下载链接】FunClip FunASR-powered video transcription, subtitle generation, and LLM-assisted clipping tool with a local Gradio UI. 项目地址: https://gitcode.com/… · 2026/9/24 14:33:15

Kornia 颜色空间转换指南:RGB 与 HSV 双向转换的 API 详解与实现原理
Kornia 颜色空间转换指南:RGB 与 HSV 双向转换的 API 详解与实现原理

Kornia 颜色空间转换指南:RGB 与 HSV 双向转换的 API 详解与实现原理 【免费下载链接】kornia 🐍 空间人工智能的几何计算机视觉库 项目地址: https://gitcode.com/kornia/kornia 导读 本文围绕 Kornia 官方文档 color.hsv.rst 展开,… · 2026/9/24 14:33:15

FunClip 视频剪辑:零门槛 3 分钟切出 2 小时录像里的精华
FunClip 视频剪辑:零门槛 3 分钟切出 2 小时录像里的精华

FunClip 视频剪辑:零门槛 3 分钟切出 2 小时录像里的精华 【免费下载链接】FunClip FunASR-powered video transcription, subtitle generation, and LLM-assisted clipping tool with a local Gradio UI. 项目地址: https://gitcode.com/GitHub_Trending/fu/FunC… · 2026/9/24 14:32:36

RS School App 自动化测试(Auto-Test)配置指南:从创建题目到 JSON Attributes 参数详解
RS School App 自动化测试(Auto-Test)配置指南:从创建题目到 JSON Attributes 参数详解

教育后端前端 【免费下载链接】rsschool-app An application for the RS School education process 项目地址: https://gitcode.com/gh_mirrors/rs/rsschool-app 点击查看 免费下载 导读 本文面向 RS School 平台的教练(trainers)与管理员&… · 2026/9/24 14:32:23

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码