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

发布时间:2026/7/25 1:42:41

算法日常・每日刷题--<快速排序>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/7/25 1:42:41

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

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

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

2026/7/25 1:42:41

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/7/25 1:42:41

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

基于深度学习的旋转机械智能诊断方法与实践

基于深度学习的旋转机械智能诊断方法与实践

2026/7/25 2:42:44

1. 项目背景与核心价值旋转机械作为工业领域的核心设备&#xff0c;其运行状态直接影响生产安全与效率。传统振动分析需要依赖专家经验&#xff0c;而基于频率学习的智能诊断方法正在改变这一局面。我在某大型发电厂设备监测项目中&#xff0c;通过MATLAB平台实现了从原始振动信…

VC++开发轻量级PDF阅读器:从文件解析到GDI渲染的实战指南

VC++开发轻量级PDF阅读器:从文件解析到GDI渲染的实战指南

2026/7/25 2:42:44

1. 项目概述&#xff1a;为什么选择VC来啃PDF这块硬骨头&#xff1f;最近在整理硬盘&#xff0c;翻出来一个老项目&#xff0c;一个用VC写的PDF阅读器小程序。现在市面上PDF阅读器多如牛毛&#xff0c;从功能强大的Adobe Acrobat到轻巧的SumatraPDF&#xff0c;为什么还要自己动…

深度剖析:机器人局部避障的关键技术与实践——全面解读从理论到应用的开发细节

深度剖析:机器人局部避障的关键技术与实践——全面解读从理论到应用的开发细节

2026/7/25 2:42:44

在现代机器人软件开发领域,实现高效的自主导航是行业的核心挑战之一。它让机器人能在复杂环境中安全、智能地移动,广泛应用于物流、家居服务和工业场景。自主导航的核心模块包括全局路径规划、局部避障、速度优化和重规划策略。本篇文章聚焦于局部避障技术,作为实现可靠导航…

云原生AI模型版本管理实践与挑战

云原生AI模型版本管理实践与挑战

2026/7/25 2:42:44

1. 云原生AI模型版本管理的核心挑战 在AI工程化落地的实践中&#xff0c;模型版本管理正成为制约迭代效率的关键瓶颈。我们团队在金融风控场景中曾遭遇典型困境&#xff1a;某次线上AB测试时&#xff0c;由于模型版本标识混乱&#xff0c;导致生产环境错误加载了未经过合规审计…

基于RRT算法的机器人路径规划详解:高效搜索树的应用与实现

基于RRT算法的机器人路径规划详解:高效搜索树的应用与实现

2026/7/25 2:42:44

路径规划是机器人软件开发中的核心技术之一,它负责为机器人找到一条从起点到终点的安全有效路径。在复杂环境中,如障碍物密集的场景,高效的搜索算法至关重要。本文将深度探讨基于快速随机扩展树(Rapidly-exploring Random Tree,简称RRT)的路径规划方法,这是一种广泛应用…

【AI视频去抖动处理终极指南】:20年影像工程师亲授5大工业级算法选型逻辑与实测性能对比(FPS提升3.7倍)

【AI视频去抖动处理终极指南】:20年影像工程师亲授5大工业级算法选型逻辑与实测性能对比(FPS提升3.7倍)

2026/7/25 2:32:44

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI视频去抖动处理的技术演进与工业落地挑战 AI视频去抖动技术已从早期基于光流估计的后处理方法&#xff0c;逐步演进为融合时空卷积、Transformer建模与神经辐射场&#xff08;NeRF&#xff09;先验的…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/24 4:17:29

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

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

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

2026/7/24 19:29:25

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

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/23 1:54:13

1 和小红书类似&#xff0c;可以采用类似判断方法------------其实他比小红书好判断&#xff0c;因为他没有图片&#xff0c;控件位置几乎是固定的&#xff0c;都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的&#xff0c;所以我就…

挑战一天速通Spring全家桶!

挑战一天速通Spring全家桶!

2026/7/25 0:02:22

不知道各位Java好大哥们闲的时候会不会去关注Spring目前的官网&#xff0c;你会发现他的slogan是: Spring makes Java Simple。它让Java的开发变得更加简单。某种意义上来说&#xff1a;是Spring成就了Java&#xff01;但随之而来的就是&#xff1a;由他之后诞生出来的各种组件…

挑战一天速通Java高并发!

挑战一天速通Java高并发!

2026/7/25 0:02:22

有出去面试的朋友肯定深有感受&#xff0c;像我们刚入行那会面试的加分项现在卷得已经成为了面试的基础题&#xff08;手动狗头&#xff09;。其中最典型的就属这个Java并发编程了。之前一般只有大厂才会有高并发编程相关的面试内容&#xff0c;但现在只要你入了Java行业就会涉…

从暴雪到米哈游都在用的平衡性评估框架,深度拆解LSTM+胜率归因分析法(附开源工具链)

从暴雪到米哈游都在用的平衡性评估框架,深度拆解LSTM+胜率归因分析法(附开源工具链)

2026/7/25 0:02:22

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI 游戏平衡性分析 现代游戏开发中&#xff0c;AI 不再仅用于控制 NPC 行为&#xff0c;更被深度整合进游戏平衡性调优流程。通过强化学习与对抗性仿真&#xff0c;AI 可以在数百万局对局中自动识别数值失衡点…