java实现快速排序
图解

快速排序是一种常见的排序算法,它通过选取一个基准元素,将待排序的数组划分为两个子数组,一个子数组中的元素都小于基准元素,另一个子数组中的元素都大于基准元素。然后递归地对子数组进行排序,直到子数组的长度为1或0。
快速排序的步骤如下:
- 选择一个基准元素,通常选择数组的第一个元素。
- 将数组划分为两个子数组,左边的子数组中的元素都小于基准元素,右边的子数组中的元素都大于基准元素。可以使用双指针法实现。
- 对左边的子数组递归地应用上述步骤,对右边的子数组递归地应用上述步骤,直到子数组的长度为1或0。
快速排序的时间复杂度为O(nlogn),空间复杂度为O(logn),其中n为待排序数组的长度。
快速排序是一种高效的排序算法,以下是Java代码实现:
public class QuickSort {public static void quickSort(int[] arr, int left, int right) {if (left < right) {int pivotIndex = partition(arr, left, right); // 获取基准值的位置quickSort(arr, left, pivotIndex - 1); // 递归排序左子数组quickSort(arr, pivotIndex + 1, right); // 递归排序右子数组}}public static int partition(int[] arr, int left, int right) {int pivot = arr[left]; // 将左边第一个元素选为基准值while (left < right) {// 从右边开始找到第一个小于基准值的元素while (left < right && arr[right] >= pivot) {right--;}// 将小于基准值的元素放到左边arr[left] = arr[right];// 从左边开始找到第一个大于基准值的元素while (left < right && arr[left] <= pivot) {left++;}// 将大于基准值的元素放到右边arr[right] = arr[left];}arr[left] = pivot; // 将基准值放到中间return left; // 返回基准值的位置}public static void main(String[] args) {int[] arr = {6, 1, 3, 9, 2, 7, 4, 8, 5};quickSort(arr, 0, arr.length - 1);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}
}
快速排序的时间复杂度为O(nlogn)。
相关文章:
java实现快速排序
图解 快速排序是一种常见的排序算法,它通过选取一个基准元素,将待排序的数组划分为两个子数组,一个子数组中的元素都小于基准元素,另一个子数组中的元素都大于基准元素。然后递归地对子数组进行排序,直到子数组的长度为…...
【Spring Boot】034-Spring Boot 整合 JUnit
【Spring Boot】034-Spring Boot 整合 JUnit 文章目录 【Spring Boot】034-Spring Boot 整合 JUnit一、单元测试1、什么是单元2、什么是单元测试3、为什么要单元测试 二、JUnit1、概述简介特点 2、JUnit4概述基本用法 3、JUnit5概述组成 4、JUnit5 与 JUnit4 的常用注解对比 三…...
基于安卓android微信小程序的师生答疑交流平app
项目介绍 本课题研究的是基于HBuilder X系统平台的师生答疑交流APP,开发这款师生答疑交流APP主要是为了帮助用户可以不用约束时间与地点进行所需信息。本文详细讲述了师生答疑交流APP的界面设计及使用,主要包括界面的实现、控件的使用、界面的布局和异常…...
开发一个接口,需要考虑什么
开发一个对外接口,一般会考虑以下因素: 用户需求:首先要考虑用户的需求,了解他们希望通过接口实现什么样的功能,以及他们期望接口具备怎样的特性和性能。 可扩展性:接口需要具备良好的可扩展性,…...
【owt】owt-p2p的vs工程构建
owt的p2p代码构建一个静态库 Build started... 1>------ Build started: Project: owtTalkP2P, Configuration: Debug Win32 ------ 1>p2ppeerconnectionchannel.cc 1>g:\webrtc_m98_yjf\src\media\base\codec.h : warning C4819: The file contains a character that…...
uniapp系列
MQTT: 1、报错:TypeError: WebSocket is not a constructor 背景:最近使用MQTT协议传递消息,集成在uniapp上,出现此问题 解决:app端需要用"wx://"(安全协议用"wxs://"&a…...
AWS实战(一)-创建S3 存储桶
1)登录AWS账号,选择服务—>存储—>S3。 2)查看存储桶列表 3)点击"创建存储桶"创建bucket。 4)设置跨域 点击编辑,修改跨域设置即可。...
Java实现简单的俄罗斯方块游戏
一、创建新项目 1.首先新建一个项目,并命名为俄罗斯方块。 2.其次新建一个类,命名为Main,或其他的。 二、运行代码 代码如下: package 俄罗斯方块;import java.awt.BorderLayout; import java.awt.Color; import java.awt.Gr…...
深度学习+opencv+python实现车道线检测 - 自动驾驶 计算机竞赛
文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 &am…...
人工智能 :一种现代的方法 第七章 逻辑智能体
文章目录 前言人工智能 :一种现代的方法 第七章 逻辑智能体7.1 基于知识的智能体7.2 Wumpus世界7.4 命题逻辑7.5 命题逻辑定理证明7.5.1推导和证明7.5.2 归结原理7.5.3 horn子句和限定子句7.5.4 前向链接和后向链接 7.6 有效命题逻辑模型求解7.6.1完备的回溯算法7.6…...
从座舱到行泊一体,亿咖通科技做对了什么?
行泊一体赛道又迎来了一个重磅玩家。 据了解,亿咖通科技旗下基于两颗华山二号A1000芯片打造的亿咖通天穹Pro行泊一体智能驾驶计算平台,目前已经正式在领克08上面实现规模化量产交付。 亿咖通天穹Pro智能驾驶计算平台 值得一提的是,该行泊一…...
BMC Helix解决方案落地亚马逊云科技中国区域,同时上线Marketplace
自主数字企业软件解决方案领域的全球领导者BMC今天宣布,由AI赋能的BMC Helix数字化服务管理平台(ITSM)正式部署于由西云数据运营的亚马逊云科技中国(宁夏)区域,实现SaaS服务和容器化部署双模态,…...
第14章 多线程二 (线程调度)
目录 内容说明 章节内容 1、多线程的调度 2、多线程调度——设置优先级...
Spring Cloud GateWay简介
什么是网关 网关是一种充当转换重任的计算机系统或设备,使用在不同的通信协议、数据格式或语言,甚至网关是一种充当转换重任的计算机系统或设备,使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间进行数…...
耿明雨出席柬方70周年招待会晚宴
11月9日,庆祝柬埔寨独立和建军70周年欢迎晚宴上,全国政协副主席沈跃跃盛邀出席,此次招待会是由柬埔寨王国驻华大使馆主办,在北京励骏酒店圆满召开,晚宴现场;凯西索达大使致辞、中国外交部部长助理徐飞洪等领…...
退役记 + 秋招总结,占坑
感觉需要写点什么东西来记录一下自己的秋招,以及还有一篇退役记没有写。 思考了一下,感觉发在空间并没有很合适,还是写个博客好了。 最近有点颓,就先买个坑在这里,省的彻底咕掉。 如果今年年底还没写出来的话ÿ…...
网络类型及数据链路层的协议
网络类型 --- 根据数据链路层使用的协议来进行划分的。 MA网络 --- 多点接入网络 BMA --- 广播型多点接入网络---以太网协议 NBMA --- 非广播型多点接入网络 以太网协议 --- 需要使用mac地址对不同的主机设备进行区分和标识 --- 以太网之所以需要使用mac地址进行数据寻址&…...
ROC 曲线:健康背景下的应用和解释
一、介绍 在医疗保健领域,做出明智的决策对于改善患者治疗结果、有效分配资源和设计有效的诊断测试至关重要。受试者工作特征 (ROC) 曲线是一个强大的工具,在评估诊断测试的性能、区分健康个体和患病个体以及优化医疗保健干预方面发挥着至关重要的作用。…...
SpringBoot + Disruptor 实现特快高并发处理,使用Disruptor高速实现队列
1 前言 工作中遇到项目使用Disruptor做消息队列,对!你没看错,不是Kafka也不是rabbitmq。Disruptor有个最大的优点就是快,还有一点它是开源的哦,下面做个简单的记录。 2 Disruptor介绍 Disruptor 是英国外汇交易公司…...
git push origin HEAD:refs/for/master
git push <远程主机名> <本地分支名> : <远程分支名> 例如 git push origin master:refs/for/master 是将本地的master分支推送到远程主机origin上的对应master分支 origin 是远程主机名, 第一个master是本地分支名, 第二…...
基于Phi-4-mini-reasoning的智能运维异常检测系统
基于Phi-4-mini-reasoning的智能运维异常检测系统 1. 运维监控的痛点与智能化需求 运维团队每天都要面对海量的日志数据、监控指标和系统告警。传统监控系统往往只能做到简单的阈值告警,当系统出现异常时,运维人员需要手动翻阅成千上万条日志ÿ…...
何时DCDC预降压+LDO二次线性稳压?
LDO 核心选型分界结论及优化要点核心选型分界结论以LDO输入输出压差ΔV为核心判断指标,结合输出功率、场景约束,通用选型规则如下:通用强制分界点:当ΔV≥2V,且输出功率≥100mW(对应你之前的5V转3V70mA工况…...
Java八股文面试题,堪称2026最强!!!
1、什么是 java 序列化,如何实现 java 序列化 难度系数:⭐ 序列化是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在…...
Zephyr与MCUBoot的深度整合:从构建到安全启动的完整指南
1. 为什么需要安全启动? 在嵌入式开发中,设备固件的安全性往往是最容易被忽视的一环。想象一下,如果你的智能门锁固件被恶意篡改,或者医疗设备的程序被非法替换,后果会有多严重?这就是为什么我们需要MCUBoo…...
告别“差不多就行”:用Cascade R-CNN解决目标检测中那些“似对非对”的边界框
从边界框“模糊地带”到工业级精度:Cascade R-CNN实战全解析 当你在自动驾驶系统中看到车辆识别框与真实车身存在5个像素的偏移,或在工业质检场景中某个关键缺陷的检测框刚好漏掉了1毫米的裂纹区域,这些“看似正确实则不准”的预测结果&#…...
Phi-4-mini-reasoning效果展示:同参数量级中推理准确率超Llama3-8B实测对比
Phi-4-mini-reasoning效果展示:同参数量级中推理准确率超Llama3-8B实测对比 1. 开篇亮点:小模型的大智慧 Phi-4-mini-reasoning这款仅有3.8B参数的轻量级开源模型,正在重新定义我们对小模型能力的认知。作为专为数学推理、逻辑推导和多步解…...
3PEAK思瑞浦 TPT1051V-SO1R SOP8 CAN收发器
特性 符合IS011898标准支持CAN FD和最高达5 Mbps的数据速率典型环路延迟:110纳秒5V电源供应,3.0V~5.5VI0接口接收器共模输入电压:士30V总线故障保护:42VCAN网络最多支持110个节点结温范围从-40C到150C闩锁性能超过500mA总线引脚ESD保护:-8kV人体模型 -1.5kV充电设备…...
Qwen3.5-2B镜像免配置部署:开箱即用WebUI(7860端口)快速上手教程
Qwen3.5-2B镜像免配置部署:开箱即用WebUI(7860端口)快速上手教程 1. 模型简介 Qwen3.5-2B是通义千问系列中的轻量化多模态基础模型,仅有20亿参数规模,专为低功耗、低门槛部署场景设计。这个版本特别适合在端侧设备和…...
SEO_五个立竿见影的页面SEO优化技巧指南
SEO优化技巧:快速提升网站页面排名的五个有效方法 在当前竞争激烈的互联网环境中,网站的SEO优化是至关重要的。无论是新建的网站还是已有网站,都需要通过一系列的SEO优化技巧来提升其在搜索引擎上的排名。下面,我们将分享五个立竿…...
MelonLoader终极指南:Unity游戏Mod加载器从入门到精通
MelonLoader终极指南:Unity游戏Mod加载器从入门到精通 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 还在为Unity游…...
