Java 排序算法实现与复杂度分析
1. 归并排序 (Merge Sort)核心思想分治策略将数组递归地分成两半分别排序后再合并。特点空间复杂度O(N) - 需要额外数组存储合并结果时间复杂度O(NlogN) - 稳定高效稳定性稳定 - 相等元素相对位置不变// 归并排序 // 空间复杂度 O(N) // 时间复杂度 O(NlogN) // 稳定 private static void mergeSort(int[] arr) { mergeSort(arr, 0, arr.length - 1); } private static void mergeSort(int[] arr, int left, int right) { if (left right) { return; } int mid (left right) / 2; mergeSort(arr, left, mid); mergeSort(arr, mid 1, right); merge(arr, left, mid, right); } private static void merge(int[] arr, int left, int mid, int right) { int[] result new int[right - left 1]; int resultSize 0; int cur1 left; int cur2 mid 1; while (cur1 mid cur2 right) { if (arr[cur1] arr[cur2]) { result[resultSize] arr[cur1]; } else { result[resultSize] arr[cur2]; } } while (cur1 mid) { result[resultSize] arr[cur1]; } while (cur2 right) { result[resultSize] arr[cur2]; } for (int i 0; i result.length; i) { arr[left i] result[i]; } }2. 冒泡排序 (Bubble Sort)核心思想重复遍历数组比较相邻元素将较大元素逐步冒泡到数组末尾。特点空间复杂度O(1) - 原地排序时间复杂度O(N²) - 效率较低稳定性稳定 - 相等元素相对位置不变// 冒泡排序 // 空间复杂度 O(1) // 时间复杂度 O(N^2) // 稳定 private static void bubbleSort(int[] arr) { for (int bound 0; bound arr.length - 1; bound) { for (int cur arr.length - 1; cur bound; cur--) { if (arr[cur - 1] arr[cur]) { int temp arr[cur - 1]; arr[cur - 1] arr[cur]; arr[cur] temp; } } } }3. 快速排序 (Quick Sort)核心思想分治策略选取基准元素将数组分为小于基准和大于基准的两部分递归排序。特点空间复杂度最坏 O(N)平均 O(logN) - 递归栈空间时间复杂度最坏 O(N²)平均 O(NlogN)稳定性不稳定 - 相等元素可能交换位置// 快速排序 // 空间复杂度 最坏 O(N)平均 O(logN) // 时间复杂度 最坏 O(N^2)平均 O(NlogN) // 不稳定 private static void quickSort(int[] arr) { quickSort(arr, 0, arr.length - 1); } private static void quickSort(int[] arr, int left, int right) { if (left right) { return; } int index partition(arr, left, right); quickSort(arr, left, index - 1); quickSort(arr, index 1, right); } private static int partition(int[] arr, int left, int right) { int value arr[right]; int l left; int r right; while (l r) { while (l r arr[l] value) { l; } while (l r arr[r] value) { r--; } swap(arr, l, r); } swap(arr, l, right); return l; } private static void swap(int[] arr, int l, int r) { int temp arr[l]; arr[l] arr[r]; arr[r] temp; }4. 快速排序非递归版本核心思想使用栈模拟递归过程避免递归调用栈的开销。// 快速排序非递归版本 static class Range { public int left; public int right; public Range(int left, int right) { this.left left; this.right right; } } static void quickSortByLoop(int[] arr) { StackRange stack new Stack(); stack.push(new Range(0, arr.length - 1)); while (!stack.isEmpty()) { Range range stack.pop(); if (range.left range.right) { continue; } int index partition(arr, range.left, range.right); stack.push(new Range(range.left, index - 1)); stack.push(new Range(index 1, range.right)); } }5. 算法对比总结排序算法空间复杂度时间复杂度稳定性适用场景归并排序O(N)O(NlogN)稳定大数据量、需要稳定排序冒泡排序O(1)O(N²)稳定教学演示、小数据量快速排序平均 O(logN)平均 O(NlogN)不稳定通用场景、性能要求高使用建议归并排序适合需要稳定排序且内存充足的大数据场景冒泡排序适合教学演示或数据量极小的场景快速排序适合大多数通用排序场景性能优秀快速排序非递归版本适合避免递归栈溢出的场景

相关新闻

HarmonyOS技术精讲-Camera Kit(相机服务)第17篇:结合AVCodec进行视频编解码

HarmonyOS技术精讲-Camera Kit(相机服务)第17篇:结合AVCodec进行视频编解码

HarmonyOS技术精讲-Camera Kit(相机服务)第17篇:结合AVCodec进行视频编解码从实际问题说起 用Camera Kit直接录制的视频,默认编码参数是按最高质量配置的。一个1080p、30fps、H.264的视频,每分钟大概占100-150MB。这个…

2026/7/24 17:16:23 阅读更多 →
面试官死磕的 RAG Top-K 到底设多少?4 维度 × 3 板斧 × 商用落地全解析,看完直接上岸

面试官死磕的 RAG Top-K 到底设多少?4 维度 × 3 板斧 × 商用落地全解析,看完直接上岸

1. 引言:Top-K 是 RAG 系统的"第一公民"参数 如果你正在构建商用 RAG(检索增强生成)系统,面试官几乎一定会问这个问题——“你们的 top-K 设多少?为什么?” 表面上看,这只是一个简单的…

2026/7/24 0:28:26 阅读更多 →
Grok4.5在中文任务上的表现怎么样?一篇看懂中文理解、写作和办公体验

Grok4.5在中文任务上的表现怎么样?一篇看懂中文理解、写作和办公体验

最近不少用户开始关心一个更实际的问题:Grok4.5 做中文任务到底顺不顺手?对很多中文写作、办公、技术沟通场景来说,模型不是会不会回答,而是能不能真正“说人话”、写得自然、理解得准确。很多人平时会先在 AI模型聚合平台 neneai…

2026/7/23 10:16:18 阅读更多 →

最新新闻

华为OD机试真题 新系统 2026-07-19 PythonJS 实现【酒店服务记录分析】

华为OD机试真题 新系统 2026-07-19 PythonJS 实现【酒店服务记录分析】

目录 题目 思路 Code 题目 题目内容: 你是某连锁酒店的数据分析师。 酒店每天都会用一串编码记录各分店收到的服务请求类型。 编码由小写字母 a 到 z 组成,每个字母代表一种特定类型的服务请求。 为了优化资源分配,总部需要找出当天…

2026/7/24 17:16:13 阅读更多 →
ADS8353/ADS7853评估套件实战:从硬件连接到性能分析的完整指南

ADS8353/ADS7853评估套件实战:从硬件连接到性能分析的完整指南

1. 项目概述:深入解析ADS8353/ADS7853评估套件在高速数据采集、工业自动化或者精密仪器仪表的设计中,选对一颗模数转换器(ADC)往往是项目成败的关键。但数据手册上的参数再漂亮,终究是纸上谈兵。如何在实际的电路板、真…

2026/7/24 17:16:13 阅读更多 →
LoRA微调技术:大模型高效适配的实践指南

LoRA微调技术:大模型高效适配的实践指南

1. LoRA微调技术概述在自然语言处理领域,大模型微调一直是个让人又爱又恨的技术。传统全参数微调需要消耗大量计算资源,动辄需要几十GB显存,让很多研究者和开发者望而却步。而LoRA(Low-Rank Adaptation)技术的出现&…

2026/7/24 17:16:13 阅读更多 →
用Deno 2.0构建现代化后端:比Node.js更安全、更简洁

用Deno 2.0构建现代化后端:比Node.js更安全、更简洁

用Deno 2.0构建现代化后端:比Node.js更安全、更简洁 Node.js的"历史包袱"问题 Node.js已经18岁了(2009年诞生),它的设计决策在当时是合理的,但现在成了"技术债务": 安全问题&#x…

2026/7/24 17:15:13 阅读更多 →
异步代码中的时序侧信道防护:常时比较、缓存行填充与 speculative execution 缓解

异步代码中的时序侧信道防护:常时比较、缓存行填充与 speculative execution 缓解

异步代码中的时序侧信道防护:常时比较、缓存行填充与 speculative execution 缓解 一、异步运行时引入的新攻击面 异步编程模型在提升吞吐量的同时,创造了新的侧信道向量。tokio::select! 的分支选择时间、任务调度的唤醒延迟、Arc 引用计数操作的 CPU 周…

2026/7/24 17:15:13 阅读更多 →
Claude Code 实战到底解决了什么问题?

Claude Code 实战到底解决了什么问题?

聊《一次Claude Code项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要之前团队引入 AI 编程工具时,我们踩过一个典型的坑:Demo 阶段跑通…

2026/7/24 17:15:13 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻