算法日常・每日刷题--<快速排序>2

发布时间:2026/9/22 13:56:05

算法日常・每日刷题--<快速排序>2
912. 排序数组 - 力扣LeetCode912. 排序数组 - 给你一个整数数组 nums请你将该数组升序排列。你必须在 不使用任何内置函数 的情况下解决问题时间复杂度为 O(nlog(n))并且空间复杂度尽可能小。 示例 1输入nums [5,2,3,1]输出[1,2,3,5]解释数组排序后某些数字的位置没有改变例如2 和 3而其他数字的位置发生了改变例如1 和 5。示例 2输入nums [5,1,1,2,0,0]输出[0,0,1,1,2,5]解释请注意nums 的值不一定唯一。 提示 * 1 nums.length 5 * 104 * -5 * 104 nums[i] 5 * 104https://leetcode.cn/problems/sort-an-array/随机基准 三路快排随机选基准随机抽取区间内数字作为 pivot从数学概率上杜绝有序数组退化平均递归深度稳定 O(logn)三路分区把区间切分成三段[l, left] key、[left1, right-1] key、[right, r] key等值元素不再参与后续递归大量重复数据下效率大幅提升原地交换仅递归栈开销无额外数组空间开销极小贴合题目「空间尽可能小」要求。三路指针含义left小于 key 区域的右边界初始l-1空区间right大于 key 区域的左边界初始r1空区间i遍历指针从头开始扫描未分区元素。分区循环逻辑nums[i] key交换到左区间lefti交换过来的数一定小于 key无需二次校验nums[i] key交换到右区间right--i 不变交换过来的数字还没判断需要重新校验nums[i] key直接跳过不做任何交换。class Solution { public: vectorint sortArray(vectorint nums) { srand(time(NULL)); qsort(nums,0,nums.size()-1); return nums; } void qsort(vectorint nums,int l,int r) { if(lr) return; int keygetRandom(nums,l,r); int il,leftl-1,rightr1; while(iright) { if(nums[i]key) swap(nums[left],nums[i]); else if(nums[i]key) swap(nums[--right],nums[i]); else i; } //l left left1 right right1 r qsort(nums,l,left); qsort(nums,right,r); } int getRandom(vectorint n,int l,int r) { int x rand(); return n[x % (r-l1) l]; } };

相关新闻

ORB-SLAM3 Relocalization 2

ORB-SLAM3 Relocalization 2

2026/8/23 12:52:48

Tracking::Relocalization() 是ORB-SLAM3在跟踪丢失后尝试“找回”自身位置的核心函数。它利用词袋模型(BoW)进行图像检索,并使用MLPnP算法进行位姿估计,是系统鲁棒性的重要保障。 下面是该函数在ORB-SLAM3中的完整代码与详细解读。 📝 完整代码 cpp bool Tracking::…

第2章C语言基本概念 练习题

第2章C语言基本概念 练习题

2026/8/23 12:52:47

2.1节 1.建立并运行由Kerighan和Ritchie编写的著名的“hello,world”程序:#include <stdio.h>int main(void) {printf("Hello World");return 0;}2.2节 2.思考下面的程序:#include <stdio.h> // 预处理指令int main(void) {printf("Parkinsons Law…

YOLO 11与Qwen3.5构建智能安防系统实战

YOLO 11与Qwen3.5构建智能安防系统实战

2026/8/23 12:52:50

1. 项目背景与核心价值最近在帮某园区做安防升级时&#xff0c;发现传统监控系统存在两个致命缺陷&#xff1a;一是需要人工24小时盯屏&#xff0c;二是事后查录像效率极低。于是尝试用YOLO 11结合Qwen3.5大模型搭建了一套智能分析系统&#xff0c;实测效果超出预期——不仅能实…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/21 18:38:46

aclmdlAddDatasetBuffer 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/21 18:41:09

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/21 18:36:40

Transformers 音频特征提取工具库 audio_utils 全解析&#xff1a;从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers &#x1f917; Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/21 18:37:26

RustFS 多节点集群重启与滚动升级实战&#xff1a;Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs &#x1f680;2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/21 18:40:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/21 18:36:17

RustFS Scanner 数据用量发布权威性决策&#xff1a;配额准入如何获得可用的权威依据 【免费下载链接】rustfs &#x1f680;2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/22 0:19:28

远程协作的工作台整理远程协作的核心不是再加一个工具&#xff0c;而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置&#xff1b;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/21 23:38:13

持续集成 流水线自动化与 声明式交付 实践&#xff1a;原型怎样变成可用功能分类&#xff1a;[AI/大模型]细分主题&#xff1a;AI 增强型 CI/CD 流水线自动化与 GitOps 实践&#xff1a;Agent 工作流、工具调用与任务拆解&#xff1a;从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/22 0:48:53

容器编排 生产环境运维与排障实战&#xff1a;复盘记录怎样真正派上用场分类&#xff1a;[工程技术]细分主题&#xff1a;Kubernetes 生产环境运维与排障实战&#xff1a;可复制的项目复盘模板与决策记录大部分团队的事故复盘报告&#xff0c;最后都变成了躺在 Confluence 或钉…