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/18 23:03:02 阅读更多 →
面试官死磕的 RAG Top-K 到底设多少?4 维度 × 3 板斧 × 商用落地全解析,看完直接上岸

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

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

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

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

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

2026/7/18 23:03:02 阅读更多 →

最新新闻

大模型推理 Prefill-Decode 分离架构深度解析:从 Monolithic 到 Disaggregated Serving 的全栈架构演进与生产实践

大模型推理 Prefill-Decode 分离架构深度解析:从 Monolithic 到 Disaggregated Serving 的全栈架构演进与生产实践

大模型推理 Prefill-Decode 分离架构深度解析:从 Monolithic 到 Disaggregated Serving 的全栈架构演进与生产实践 核心痛点:现代 LLM 推理把 Prefill(处理完整 prompt、并行填充 KV Cache)与 Decode(自回归逐 token 生成、显存带宽密集)强行塞进同一组 GPU,由同一调度器…

2026/7/19 0:06:45 阅读更多 →
WarcraftHelper:5分钟解决魔兽争霸III现代兼容性难题的终极方案

WarcraftHelper:5分钟解决魔兽争霸III现代兼容性难题的终极方案

WarcraftHelper:5分钟解决魔兽争霸III现代兼容性难题的终极方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典魔兽争霸III在现…

2026/7/19 0:06:45 阅读更多 →
盘点16个把自己做成Skills的国民级App、网站,Agent 工具一键调用

盘点16个把自己做成Skills的国民级App、网站,Agent 工具一键调用

前几天跟朋友聊天,我说现在的 AI 越来越像个“只会敲键盘的实习生”——你让它写个文案、做个表格还行,但真要让它帮你在现实里点杯咖啡、打个车,它就抓瞎了。不过,这事儿最近正在悄悄起变化。我注意到一个挺有意思的现象&#xf…

2026/7/19 0:05:44 阅读更多 →
【AI问数】自然语言查询 + RAG引擎:AI问数的黄金搭档

【AI问数】自然语言查询 + RAG引擎:AI问数的黄金搭档

70% 查询占比 95% RAG增强准确率 5 查询类型 <3秒 响应时间 自然语言查询模块RAG引擎是AI问数的黄金搭档&#xff0c;承担70%的用户请求。支持单表查询、多表JOIN、嵌套子查询、窗口函数、聚合分析。结合四维RAG&#xff0c;复杂查询准确率从30%提升至90%。 一、支持的…

2026/7/19 0:05:44 阅读更多 →
HarmonyOS 实战 | 手势识别——滑、长按、捏合到底怎么回事

HarmonyOS 实战 | 手势识别——滑、长按、捏合到底怎么回事

一、我们想解决什么问题 先想一个很常见的场景。 你打开相册&#xff0c;想把一张照片放大看看细节&#xff0c;你会怎么操作&#xff1f;大多数人第一反应是——两根手指在屏幕上捏一下&#xff0c;图片就放大了。再仔细看某个局部&#xff0c;就再捏一下&#xff1b;看完了想…

2026/7/19 0:04:43 阅读更多 →
零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵&#xff08;连锁便利店/商超标准配置&#xff09; 自助收银Kiosk一体机&#xff1a;顾客结算、自助核销优惠券、商品素材预览&#xff1b;运营折叠平板&#xff1a;店长后台商品上新、图片录入、活动配置、…

2026/7/19 0:03:42 阅读更多 →

日新闻

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

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

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

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

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

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

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

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

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

2026/7/19 0:00:40 阅读更多 →

周新闻

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

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

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

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

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

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

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

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

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

2026/7/19 0:00:40 阅读更多 →

月新闻