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

深入理解快速排序算法(Java实现)

深入理解快速排序算法(Java实现)

1. 算法简介

快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

2. 核心思想

快速排序使用分治法(Divide and Conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。

步骤为:

  1. 从数列中挑出一个元素,称为 "基准"(pivot);
  2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
  3. 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

3. Java 代码实现

下面是一个标准的快速排序实现:

import java.util.Arrays; public class QuickSort { public static void main(String[] args) { int[] arr = {10, 7, 8, 9, 1, 5}; System.out.println("原始数组: " + Arrays.toString(arr)); quickSort(arr, 0, arr.length - 1); System.out.println("排序后数组: " + Arrays.toString(arr)); } /** * 快速排序主方法 * @param arr 待排序数组 * @param low 起始索引 * @param high 结束索引 */ public static void quickSort(int[] arr, int low, int high) { if (low < high) { // partitionIndex 是分区操作后 pivot 的位置 int partitionIndex = partition(arr, low, high); // 递归排序 pivot 左边和右边的元素 quickSort(arr, low, partitionIndex - 1); quickSort(arr, partitionIndex + 1, high); } } /** * 分区操作 * 该函数选取最后一个元素作为 pivot * 将小于 pivot 的元素放在 pivot 左边 * 将大于 pivot 的元素放在 pivot 右边 */ private static int partition(int[] arr, int low, int high) { // 选择最后一个元素作为基准 int pivot = arr[high]; // i 是较小元素的索引 int i = (low - 1); for (int j = low; j < high; j++) { // 如果当前元素小于或等于 pivot if (arr[j] <= pivot) { i++; // 交换 arr[i] 和 arr[j] swap(arr, i, j); } } // 交换 arr[i+1] 和 arr[high] (或 pivot) 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; } }

4. 复杂度分析

  • 时间复杂度
    • 平均情况:O(n log n)
    • 最坏情况:O(n^2) (例如数组已经有序,且每次选择最后一个元素作为基准)
    • 最好情况:O(n log n)
  • 空间复杂度:O(log n) (递归调用栈的空间)

快速排序通常被认为是同数量级(O(n log n))的排序算法中平均性能最好的。

http://www.jsqmd.com/news/337037/

相关文章:

  • 聊城五星级酒店婚宴服务排名,世纪缘酒店性价比高靠谱推荐 - mypinpai
  • 2026年质量好的食品PE袋/黑色PE袋最新TOP厂家排名 - 品牌宣传支持者
  • python基于微信小程序的个人出行路线规划之地铁站点查询系统
  • 2026年比较好的Cr12MoV模具钢/Cr12模具钢厂家推荐及采购指南 - 品牌宣传支持者
  • 曹操出行进行配售:募资总额3.9亿港元
  • 真的太省时间了!AI论文工具 千笔·专业论文写作工具 VS 知文AI,自考必备!
  • 亲测好用9个降AIGC工具 千笔AI帮你轻松降AI率
  • 惊爆!72.1K star 的 Netdata:实时监控与可视化的超炫神器!
  • 为什么你的代码能力越强,反而在公司越“不存在“?
  • AI赋能网文创作:高质量小说提纲撰写实操指南
  • 北京上门回收老酒|京城亚南深耕十年,正规资质护航名酒变现 - 品牌排行榜单
  • 诚信的GEO服务专业公司靠谱吗,珠海口碑好的有哪些? - 工业设备
  • 表头标题表头
  • 2026年兰州可靠的装修机构年度排名,看看哪家值得选 - 工业品牌热点
  • 假新闻检测数据集_44898条新闻文本数据用于机器学习与自然语言处理研究-训练和评估假新闻检测模型,开发自然语言处理算法,以及构建智能内容审核系统-理解虚假信息的语言特征、传播模式和识别方法
  • MATLAB代码:基于MATLAB的三母线高斯赛德尔潮流分析计算 关键词:潮流计算 电力系统 ...
  • 2026年高考志愿填报靠谱机构排名,正则教育位列前列 - 工业品网
  • 拖延症福音!AI论文网站 千笔写作工具 VS 灵感风暴AI,专科生专属神器!
  • AI赋能网文创作:高质量小说提纲撰写全攻略
  • 讲讲睿臻领航人才落户咨询机构,费用多少钱 - mypinpai
  • Flutter艺术探索-Flutter自动化测试:集成测试与Widget测试
  • 学长亲荐 10个AI论文写作软件:专科生毕业论文+开题报告高效工具测评
  • 探寻2026年九巧灌装机械,酒水灌装机靠谱因素有哪些内容 - 工业推荐榜
  • 说说艺术涂料漆加盟品牌推荐,玛斯涂在环保进口领域靠谱吗 - myqiye
  • CVE-2017-5645_ Apache Log4j Server 反序列化命令执行漏洞
  • 小巧电纸书的烦恼与潜力:硬件挑战与社区破解
  • 2026年口碑好的磁悬浮冷水机/冷水机厂家推荐及选择指南 - 品牌宣传支持者
  • Itinerary和segment对比
  • 靶向蛋白组学研究直肠癌生物靶标
  • 开源多智能体框架全景技术调研报告 - 教程