news 2026/6/9 17:39:36

经典算法题型之排序算法(二)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
经典算法题型之排序算法(二)

冒泡排序的第一种写法

代码如下:

public static void bubbleSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { // 如果左边的数大于右边的数,则交换,保证右边的数字最大 arr[j + 1] = arr[j + 1] + arr[j]; arr[j] = arr[j + 1] - arr[j]; arr[j + 1] = arr[j + 1] - arr[j]; } } } }

最外层的 for 循环每经过一轮,剩余数字中的最大值就会被移动到当前轮次的最后一位,中途也会有一些相邻的数字经过交换变得有序。总共比较次数是(n-1)+(n-2)+(n-3)+…+1。

这种写法相当于相邻的数字两两比较,并且规定:“谁大谁站右边”。经过 n-1 轮,数字就从小到大排序完成了。整个过程看起来就像一个个气泡不断上浮,这也是“冒泡排序法”名字的由来。

其中,我们在交换两个数字时使用了一个小魔术:没有引入第三个中间变量就完成了两个数字的交换。这个交换问题曾经出现在大厂面试题中,感兴趣的读者可以细品一下。除了这种先加后减的写法,还有一种先减后加的写法:

arr[j + 1] = arr[j] - arr[j + 1]; arr[j] = arr[j] - arr[j + 1]; arr[j + 1] = arr[j + 1] + arr[j];

这两种交换数字的方式和我们平时常用的写法是等价的(不考虑数字越界的情况):

int temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 16:41:44

面试题:了解事件循环吗

彻底搞懂 JavaScript 事件循环&#xff1a;宏任务、微任务与同步代码的关系“JavaScript 是单线程的&#xff0c;那它是如何处理异步操作的&#xff1f;” 答案就是&#xff1a;事件循环&#xff08;Event Loop&#xff09;。很多前端开发者对 setTimeout、Promise 的执行顺序感…

作者头像 李华
网站建设 2026/6/10 16:04:32

RoPE位置编码原理解析:在PyTorch-CUDA-v2.7中实现细节

RoPE位置编码原理解析&#xff1a;在PyTorch-CUDA-v2.7中实现细节 在大语言模型&#xff08;LLM&#xff09;飞速演进的今天&#xff0c;Transformer 架构早已成为自然语言处理领域的基石。然而&#xff0c;随着上下文长度不断扩展——从最初的512扩展到如今动辄32K甚至更长—…

作者头像 李华
网站建设 2026/6/10 12:59:48

大模型上下文扩展技术:PyTorch-CUDA-v2.7支持长序列处理

大模型上下文扩展技术&#xff1a;PyTorch-CUDA-v2.7支持长序列处理 在当前大语言模型&#xff08;LLM&#xff09;飞速发展的背景下&#xff0c;上下文长度的扩展已不再是锦上添花的功能&#xff0c;而是决定模型能否真正理解复杂文档、实现跨段落推理甚至长期对话记忆的关键能…

作者头像 李华
网站建设 2026/6/10 13:13:17

Git工作流规范:在PyTorch项目中实施Branch策略

Git工作流规范&#xff1a;在PyTorch项目中实施Branch策略 在现代AI团队的日常开发中&#xff0c;你是否经历过这样的场景&#xff1a;同事刚提交的代码导致整个训练流程崩溃&#xff0c;而问题原因竟是他本地装了不同版本的PyTorch&#xff1f;或者你在复现一篇论文实验时&…

作者头像 李华
网站建设 2026/6/10 13:00:50

分布式数据并行(DDP)配置:PyTorch-CUDA-v2.7多卡训练教程

分布式数据并行&#xff08;DDP&#xff09;配置&#xff1a;PyTorch-CUDA-v2.7多卡训练实战指南 在当今深度学习模型动辄数十亿参数的背景下&#xff0c;单张GPU早已无法支撑主流任务的训练需求。从大语言模型到高分辨率图像生成&#xff0c;算力瓶颈成为制约研发效率的关键因…

作者头像 李华
网站建设 2026/6/10 13:12:17

Jupyter密码设置与安全访问:PyTorch容器使用注意事项

Jupyter密码设置与安全访问&#xff1a;PyTorch容器使用注意事项 在如今的AI开发实践中&#xff0c;越来越多工程师选择在远程服务器或云平台上运行搭载 PyTorch 和 Jupyter 的 Docker 容器。这种组合极大提升了开发效率——无需繁琐配置即可快速进入模型调试环境。但随之而来的…

作者头像 李华