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

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


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址: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.xdnf.cn/news/10533.html

相关文章:

  • 探秘集成学习:从基础概念到实战应用
  • 微软PowerBI考试 PL-300学习指南
  • DeepSeek 赋能车路协同:智能交通的破局与重构
  • 模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》
  • 核心机制:滑动窗口
  • 相机--相机标定
  • 芝麻酱工作创新点分享1——SpringBoot下使用mongo+Redis做向量搜索
  • PyTorch——卷积操作(2)
  • [网页五子棋][匹配对战]落子实现思路、发送落子请求、处理落子响应
  • Python 在金融中的应用- Part 1
  • JSP、HTML和Tomcat
  • Linux运维笔记:服务器感染 netools 病毒案例
  • Windows+VSCode搭建小智(xiaozhi)开发环境
  • 通信革新与网络安全探索与创新:开启未来之门
  • ShenNiusModularity项目源码学习(33:ShenNius.Admin.Mvc项目分析-18)
  • 【看到哪里写到哪里】C的指针-3(函数指针)
  • P1115 最大子段和
  • 打卡第43天
  • 【Ragflow】24.Ragflow-plus开发日志:增加分词逻辑,修复关键词检索失效问题
  • 从 AMQP 到 RabbitMQ:核心组件设计与工作原理(一)
  • [Java恶补day13] 53. 最大子数组和
  • 判断使用什么技术来爬取数据详细讲解
  • 【Redis】笔记|第5节|Redisson实现高并发分布式锁核心源码
  • 个人总结八股文之-基础篇(持续更新)
  • 汽车软件 OTA 升级技术发展现状与趋势
  • 设计模式——中介者设计模式(行为型)
  • 【Qt开发】对话框
  • 深入理解 Linux 文件系统与日志文件分析
  • NodeJS全栈WEB3面试题——P8项目实战类问题(偏全栈)
  • 安全态势感知中的告警误报思考