重温经典算法——快速排序

article/2025/6/29 13:08:49

版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

在这里插入图片描述

基本原理

快速排序基于分治思想,通过选取基准元素将数组划分为两个子数组(小于基准和大于基准),递归排序子数组。平均时间复杂度 O(n log n),最差 O(n²)(如已有序且基准选择不当),空间复杂度 O(log n)。

代码实现

import java.util.Arrays;public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {int pivotIndex = partition(arr, low, high); // 获取基准位置quickSort(arr, low, pivotIndex - 1);  // 递归排序左子数组quickSort(arr, pivotIndex + 1, high); // 递归排序右子数组}}private static int partition(int[] arr, int low, int high) {int pivot = arr[high]; // 选择最后一个元素为基准(可优化为三数取中)int i = low - 1;       // 记录小于基准的子数组末尾位置for (int j = low; j < high; j++) {if (arr[j] <= pivot) {i++;swap(arr, i, j); // 将小于基准的元素交换到左侧}}swap(arr, i + 1, high); // 将基准放到正确位置return i + 1;}private static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}public static void main(String[] args) {int[] arr = {10, 7, 8, 9, 1, 5};quickSort(arr, 0, arr.length - 1);System.out.println("Sorted array: " + Arrays.toString(arr));// 输出:Sorted array: [1, 5, 7, 8, 9, 10]}
}

http://www.hkcw.cn/article/rKXtmlZUaY.shtml

相关文章

【机器学习】集成学习与梯度提升决策树

目录 一、引言 二、自举聚合与随机森林 三、集成学习器 四、提升算法 五、Python代码实现集成学习与梯度提升决策树的实验 六、总结 一、引言 在机器学习的广阔领域中,集成学习(Ensemble Learning)犹如一座闪耀的明星,它通过组合多个基本学习器的力量,创造出…

Python量化交易:K线形态识别与技术分析可视化

引言 在量化交易领域&#xff0c;K线形态识别是一种重要的技术分析方法&#xff0c;可以帮助投资者预测市场趋势并制定交易策略。本文将介绍如何使用Python实现K线形态的自动识别与可视化分析&#xff0c;无需依赖复杂的第三方库如TA-Lib&#xff0c;完全使用纯Python实现。通…

前端自动化测试利器:Playwright 全面介绍

目录 &#x1f9ea; 前端自动化测试利器&#xff1a;Playwright 全面介绍 ✨ 为什么选择 Playwright&#xff1f; 1. 跨浏览器支持 2. 多语言支持 3. 自动等待机制 4. 强大的页面交互能力 &#x1f527; Playwright 快速上手 &#x1f4f8; 更强的调试体验 &#x1f9…

华为云Flexus+DeepSeek征文|华为云 Dify 打造智慧水果分析助手,实现“知识库 + 大模型”精准赋能

前言 本文聚焦基于华为云平台部署的智慧水果分析助手 AI Agent&#xff0c;通过 Dify 平台集成 Embedding、Rerank 及 DeepSeek 模型&#xff0c;构建工作流&#xff0c;实现提问内容驱动的 “知识库 大模型” 与 “联网搜索 大模型” 智能切换。 ECS控制台&#xff1a;https…

【算法设计与分析】实验——改写二分搜索算法,众数问题(算法分析:主要算法思路),有重复元素的排列问题,整数因子分解问题(算法实现:过程,分析,小结)

说明&#xff1a;博主是大学生&#xff0c;有一门课是算法设计与分析&#xff0c;这是博主记录课程实验报告的内容&#xff0c;题目是老师给的&#xff0c;其他内容和代码均为原创&#xff0c;可以参考学习&#xff0c;转载和搬运需评论吱声并注明出处哦。 要求&#xff1a;2.…

MCP协议学习

MCP协议出现的背景 MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;由Anthropic公司于2024年11月推出&#xff0c;旨在解决大语言模型&#xff08;LLM&#xff09;与外部数据源、工具和服务之间的标准化交互问题。例如某金融科技公司需开发一款…

【笔记】Windows 部署 Suna 开源项目完整流程记录

#工作记录 因篇幅有限&#xff0c;所有涉及处理步骤的详细处理办法请参考文末资料。 Microsoft Windows [Version 10.0.27868.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗…

SQL Views(视图)

目录 Views Declaring Views Example: View Definition Example: Accessing a View Advantages of Views Triggers on Views Interpreting a View Insertion&#xff08;视图插入操作的解释&#xff09; The Trigger Views A view is a relation defined in terms of…

MySQL指令个人笔记

MySQL学习&#xff0c;SQL语言笔记 一、MySQL 1.1 启动、停止 启动 net start mysql83停止 net stop mysql831.2 连接、断开 连接 mysql -h localhost -P 3306 -u root -p断开 exit或者ctrlc 二、DDL 2.1 库管理 2.1.1 直接创建库 使用默认字符集和排序方式&#xf…

【redis实战篇】第七天

摘要&#xff1a; 本文介绍了黑马点评中点赞、关注和推送功能的实现方案。点赞功能采用Redis的ZSET结构存储用户点赞数据&#xff0c;实现点赞状态查询、热门博客排行和点赞用户展示。关注功能通过关系表和Redis集合实现用户关注关系管理&#xff0c;包含共同关注查询。推送功能…

[yolov11改进系列]基于yolov11引入特征融合注意网络FFA-Net的python源码+训练源码

【FFA-Net介绍】 北大和北航联合提出的FFA-net: Feature Fusion Attention Network for Single Image Dehazing图像增强去雾网络&#xff0c;该网络的主要思想是利用特征融合注意力网络&#xff08;Feature Fusion Attention Network&#xff09;直接恢复无雾图像&#xff0c;…

Baklib领跑三强:知识管理高效优选

Baklib技术架构解析 Baklib的技术底座基于全链路数字化管理理念&#xff0c;通过知识中台的三层架构实现企业级知识资产的深度整合。核心层采用分布式存储引擎与多模态数据处理技术&#xff0c;支持文档、音视频、代码等20格式的智能化解析&#xff0c;确保非结构化数据的精准…

零基础学习计算机网络编程----socket实现UDP协议

本章将会详细的介绍如何使用 socket 实现 UDP 协议的传送数据。有了前面基础知识的铺垫。对于本章的理解将会变得简单。将会从基础的 Serve 的初始化&#xff0c;进阶到 Client 的初始化&#xff0c;以及 run。最后实现一个简陋的小型的网络聊天室。 目录 1.UdpSever.h 1.1 构造…

深入了解linux系统—— 进程间通信之管道

前言 本篇博客所涉及到的代码一同步到本人gitee&#xff1a;testfifo 迟来的grown/linux - 码云 - 开源中国 一、进程间通信 什么是进程间通信 在之前的学习中&#xff0c;我们了解到了进程具有独立性&#xff0c;就算是父子进程&#xff0c;在修改数据时也会进行写时拷贝&…

电脑使用VPN后直接关机,再次打开后无法上网的问题

出现这种问题&#xff0c;都是在使用VPN后&#xff0c;以前自己都是通过杀毒软件的网络修复工具进行解决的。 但现在有了一个更简单的方法&#xff1a; 打开设置&#xff0c;找到网络中的代理,然后关闭即可。

【Linux】线程控制

&#x1f4dd;前言&#xff1a; 这篇文章我们来讲讲Linux——线程控制 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;Linux &#x1f380;CSDN主页 愚润求学 &#x1f304;其他专栏&#xff1a;C学习笔记&#xff0c;C语言入门基础&#xf…

CppCon 2014 学习:Hardening Your Code

“Hardening Your Code” 是指增强代码的健壮性、安全性、可维护性和可测试性&#xff0c;确保在各种边界条件、错误场景甚至恶意输入下&#xff0c;代码依然稳定运行&#xff0c;不崩溃、不泄露资源&#xff0c;也不产生未定义行为。 什么是“Hardening Your Code”&#xff…

【js逆向_AES】某专业技术人员继续教育平台登录分析及模拟实践

目标&#xff1a;account&#xff0c;password加密 网址&#xff1a;aHR0cHM6Ly93d3cuZ3N6eGp5cHguY24vd2ViL2luZGV4 请求载荷加密方式 账号加密&#xff1a; 网页调试输出&#xff1a; python代码&#xff1a; from Cryptodome.Cipher import AES import base64 from Crypto…

《信号与系统》--期末总结V1.0

《信号与系统》–期末总结V1.0 学习链接 入门&#xff1a;【拯救期末】期末必备&#xff01;8小时速成信号与系统&#xff01;【拯救期末】期末必备&#xff01;8小时速成信号与系统&#xff01;_哔哩哔哩_bilibili 精通&#xff1a;2022浙江大学信号与系统&#xff08;含配…

可视化大屏通用模板Axure原型设计案例

本文将介绍一款基于Axure设计的可视化大屏通用模板&#xff0c;适用于城市、网络安全、园区、交通、社区、工业、医疗、能源等多个领域。 模板概述 这款Axure可视化大屏通用模板集成了多种数据展示模块和组件&#xff0c;旨在为用户提供一个灵活、可定制的数据展示平台。无论…