算法日常・每日刷题--<快速排序>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

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

2026/7/25 1:42:11 阅读更多 →
第2章C语言基本概念 练习题

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

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…

2026/7/25 1:42:11 阅读更多 →
Dify实战:一站式接入与管理OpenAI、Claude及本地大模型

Dify实战:一站式接入与管理OpenAI、Claude及本地大模型

在构建基于大模型的AI应用时,你是否曾为模型接入的复杂性而头疼?不同的API、各异的认证方式、复杂的参数配置,让一个简单的想法从构思到落地变得异常繁琐。Dify作为一款生产级的Agentic工作流开发平台,其核心优势之一就是“无缝接入全球大模型”,将我们从繁琐的底层对接中…

2026/7/25 1:41:11 阅读更多 →

最新新闻

3分钟快速上手:qmc-decoder帮你解锁QQ音乐加密音频的完整指南

3分钟快速上手:qmc-decoder帮你解锁QQ音乐加密音频的完整指南

3分钟快速上手&#xff1a;qmc-decoder帮你解锁QQ音乐加密音频的完整指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经下载了心爱的QQ音乐歌曲&#xff0c;却…

2026/7/25 1:48:13 阅读更多 →
Linux内核升级后NVIDIA驱动与CUDA环境修复全攻略

Linux内核升级后NVIDIA驱动与CUDA环境修复全攻略

1. 从标题拆解:一次内核升级与驱动修复的典型复盘 看到这个标题,你大概能猜到这是一次 Linux 内核升级后,NVIDIA 驱动需要重新适配的常规操作。但“体感平平无奇”背后,往往藏着最容易被忽略的依赖关系和环境细节。而“被 Gemini 发现的 bug”这个点,则把话题从单纯的驱动…

2026/7/25 1:48:13 阅读更多 →
重构合作伙伴 ROI:除了销售额,这 3 个指标才是增长晴雨表

重构合作伙伴 ROI:除了销售额,这 3 个指标才是增长晴雨表

在营销领域&#xff0c;你对各种指标早已习以为常&#xff1a;它们决定预算投放方向、验证活动成效、帮助你做更聪明的增长决策。但当这些理念切换到“合作伙伴营销”&#xff08;Partner Marketing&#xff09;或“渠道增长计划”时&#xff0c;许多团队却只盯着一个指标&…

2026/7/25 1:48:13 阅读更多 →
深入解析TI KeyStone II EDMA3控制器:架构、配置与性能优化实战

深入解析TI KeyStone II EDMA3控制器:架构、配置与性能优化实战

1. 项目概述与核心价值在嵌入式系统&#xff0c;尤其是像德州仪器&#xff08;TI&#xff09;KeyStone II架构下的66AK2E05/02这类高性能多核处理器中&#xff0c;数据搬移的效率直接决定了整个系统的性能上限。当CPU核心忙于复杂的信号处理或网络协议栈运算时&#xff0c;如果…

2026/7/25 1:48:13 阅读更多 →
计算机毕业设计之社区疫情防控管理系统

计算机毕业设计之社区疫情防控管理系统

近年来&#xff0c;科技飞速发展&#xff0c;在经济全球化的背景之下&#xff0c;互联网技术将进一步提高社会综合发展的效率和速度&#xff0c;互联网技术也会涉及到各个领域&#xff0c;而社区疫情防控管理系统在网络背景下有着无法忽视的作用。信息管理系统的开发是一个不断…

2026/7/25 1:48:13 阅读更多 →
Zotero PDF Translate:20+翻译引擎的学术翻译利器

Zotero PDF Translate:20+翻译引擎的学术翻译利器

Zotero PDF Translate&#xff1a;20翻译引擎的学术翻译利器 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.com/gh_mirrors/zo/zo…

2026/7/25 1:47:13 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制&#xff1a;kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档&#xff0c;但是相关网站浏览体验不好各种广告&#xff0c;各种登录验证&#xff0c;需要很多步骤才能下载文档&#xff0c;该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述&#xff1a;为什么我们要“手撕”string类&#xff1f;在C的学习道路上&#xff0c;尤其是从C语言过渡到C的“初阶”阶段&#xff0c;string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了&#xff0c;、find、substr&#xff0c;几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看&#xff0c;“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具&#xff0c;而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源&#xff0c;比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/24 18:52:18 阅读更多 →

月新闻