当前位置: 首页 > article >正文

LeetCode 快速排序 题解

LeetCode 快速排序 题解题目描述实现快速排序算法对一个整数数组进行排序。示例 1输入nums [5,2,3,1] 输出[1,2,3,5]示例 2输入nums [5,1,1,2,0,0] 输出[0,0,1,1,2,5]解题思路方法快速排序思路快速排序是一种分治算法它的工作原理是选择一个基准元素将数组分成两部分小于基准的元素放在左边大于基准的元素放在右边然后对左右两部分分别进行快速排序。快速排序的过程是递归的它不断地将数组分成更小的子数组直到子数组的长度为 1。复杂度分析时间复杂度O(n log n)其中 n 是数组的长度。最坏情况下时间复杂度为 O(n²)但平均情况下是 O(n log n)。空间复杂度O(log n)需要使用递归栈空间。代码实现方法快速排序def quick_sort(nums): # 调用辅助函数 quick_sort_helper(nums, 0, len(nums) - 1) return nums def quick_sort_helper(nums, left, right): # 递归终止条件 if left right: # 分区操作返回基准元素的位置 pivot_idx partition(nums, left, right) # 递归排序左半部分 quick_sort_helper(nums, left, pivot_idx - 1) # 递归排序右半部分 quick_sort_helper(nums, pivot_idx 1, right) def partition(nums, left, right): # 选择最右边的元素作为基准 pivot nums[right] # 初始化指针 i i left - 1 # 遍历数组 for j in range(left, right): # 如果当前元素小于基准交换元素并移动指针 i if nums[j] pivot: i 1 nums[i], nums[j] nums[j], nums[i] # 将基准元素放到正确的位置 nums[i 1], nums[right] nums[right], nums[i 1] # 返回基准元素的位置 return i 1 # 测试 nums1 [5,2,3,1] print(quick_sort(nums1)) # 输出[1,2,3,5] nums2 [5,1,1,2,0,0] print(quick_sort(nums2)) # 输出[0,0,1,1,2,5]测试用例测试用例 1输入nums [5,2,3,1]输出[1,2,3,5]测试用例 2输入nums [5,1,1,2,0,0]输出[0,0,1,1,2,5]总结本题是排序算法的经典问题主要考察对快速排序算法的理解和实现。快速排序是一种分治算法它通过选择基准元素将数组分成两部分然后对左右两部分分别进行快速排序来完成排序。快速排序的核心思想是选择一个基准元素将数组分成两部分小于基准的元素放在左边大于基准的元素放在右边然后递归地对左右两部分进行排序。这种方法的平均时间复杂度为 O(n log n)是一种不稳定的排序算法适用于大规模数据的排序。掌握快速排序的原理对于理解分治算法和递归思想非常重要。

相关文章:

LeetCode 快速排序 题解

LeetCode 快速排序 题解 题目描述 实现快速排序算法,对一个整数数组进行排序。 示例 1: 输入:nums [5,2,3,1] 输出:[1,2,3,5]示例 2: 输入:nums [5,1,1,2,0,0] 输出:[0,0,1,1,2,5]解题思路 方…...

OPPO Reno6 Pro强解BL锁实战:MTK机型Root全流程(含Magisk安装避坑指南)

OPPO Reno6 Pro深度解锁指南:从BL解锁到Magisk安装的全流程解析 开篇:为什么我们需要解锁BL锁? 每次拿到新手机,总有种被束缚的感觉——预装应用删不掉、系统功能改不了、性能潜力挖不出。对于OPPO Reno6 Pro这样的MTK平台设备&…...

收藏!AI时代开发者不被淘汰的转型指南,小白程序员必看(附四周落地计划)

收藏!AI时代开发者不被淘汰的转型指南,小白&程序员必看(附四周落地计划) 最近和300多位开发者深入交流后发现,有70%的人都在陷入同一个焦虑:AI大模型飞速发展,代码能自动生成、需求能快速落…...

Matlab filter函数从入门到进阶:除了b和a,你必须要懂的zi和zf参数怎么用

Matlab filter函数进阶指南:掌握zi和zf参数实现无缝分段滤波 在信号处理的实际工程场景中,我们常常会遇到内存受限或数据流式到达的情况。想象一下,你正在处理一段长达数小时的音频文件,或者实时接收来自传感器的连续数据流——直…...

GDELT数据库能做什么?5个意想不到的数据分析项目灵感(附Python代码片段)

GDELT数据库能做什么?5个意想不到的数据分析项目灵感(附Python代码片段) 如果你对全球新闻数据感兴趣,GDELT数据库绝对是一个值得探索的宝藏。这个庞大的数据库实时监控全球新闻媒体,记录事件、情感、人物关系等多维度…...

从零部署Qwen2.5-VL-7B-Instruct:图文对话AI的本地化实践

1. 环境准备:搭建Qwen2.5-VL的生存土壤 在开始部署Qwen2.5-VL-7B-Instruct之前,我们需要确保本地环境满足基本要求。这个72亿参数的多模态模型对硬件有一定需求,实测在RTX 3090显卡上运行显存占用约14GB。建议至少准备24GB显存的NVIDIA显卡&a…...

如何实现课堂学习自由:3个场景的完整学习辅助工具指南

如何实现课堂学习自由:3个场景的完整学习辅助工具指南 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 在数字化教学环境中,学生常常面临学习自主权受限的困…...

从照片到虚拟世界:Colmap+Meshlab+Unity三维重建实战全流程解析

1. 三维重建技术入门:从照片到3D模型的魔法 想象一下,你手机里随手拍的几十张照片,经过几个开源工具的"魔法处理",就能变成可以在游戏引擎里自由旋转的3D模型。这就是ColmapMeshlabUnity组合带来的神奇体验。我第一次用…...

魔兽争霸III终极优化指南:用Warcraft Helper解决Windows兼容性问题

魔兽争霸III终极优化指南:用Warcraft Helper解决Windows兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在Wi…...

SVD不只是数学:深入浅出看懂它在推荐系统和图像压缩里是怎么工作的

SVD不只是数学:深入浅出看懂它在推荐系统和图像压缩里是怎么工作的 当你在线购物时,那些"猜你喜欢"的商品推荐从何而来?当你用手机拍摄照片并上传社交平台时,图片为何能快速加载且不失真?这背后都藏着一个强…...

高效掌握Windows Cleaner:专业级系统优化工具全面解析

高效掌握Windows Cleaner:专业级系统优化工具全面解析 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统打造的免…...

【仅限前500名开发者】:2026奇点大会AI注释生成开源工具链抢先体验版(含VS Code插件+CI/CD校验模块)

第一章:2026奇点智能技术大会:AI注释生成 2026奇点智能技术大会(https://ml-summit.org) 核心突破:从代码到语义的零样本注释合成 本届大会首次公开演示了基于多模态推理链(MRC)的AI注释生成系统——AnnotateLLM v3.…...

C++ 从 0 入门(三)|类与对象基础(封装、构造 / 析构函数,面试必考)

大家好,我是网域小星球。 本篇是 C 面向对象的核心开篇,也是 C 面试重中之重 —— 类与对象基础。面试官几乎都会问封装、构造函数、析构函数的用法,甚至让手撕代码。本篇全程聚焦面试考点,不冗余、只讲核心,代码 VS2…...

C++ 从 0 入门(二)|引用与指针区别、函数重载、内联函数(面试高频)

大家好,我是网域小星球。 本篇聚焦 C 面试核心考点,全是面试官必问、笔试题常考内容,衔接上一篇基础,不冗余、不堆砌,只讲核心用法 面试踩分点,所有代码 VS2022 可直接运行,学完能应对 C 基础…...

C++ 从 0 入门(一)|C++ 基础语法、命名空间、引用、IO 输入输出

大家好,我是网域小星球。 C 兼容 C 语言全部语法,同时扩展了面向对象、引用、泛型、内存管理等高级特性,也是 C 开发岗面试的核心考察内容。本篇从零过渡 C 基础,聚焦语法差异、高频考点、笔试题,所有代码 VS2022 直接…...

终极指南:如何在Unity 2D游戏中快速实现智能角色导航

终极指南:如何在Unity 2D游戏中快速实现智能角色导航 【免费下载链接】NavMeshPlus Unity NavMesh 2D Pathfinding 项目地址: https://gitcode.com/gh_mirrors/na/NavMeshPlus NavMeshPlus是一个专为Unity 2D游戏设计的导航网格插件,它扩展了Unit…...

用LabView和STC89C52打造智能温湿度报警系统(含上位机控制)

用LabView和STC89C52打造智能温湿度报警系统(含上位机控制) 在智能家居和工业监控领域,温湿度监测一直是核心需求之一。传统的手动记录方式早已无法满足现代场景对实时性和智能化的要求。本文将带你从零构建一套完整的智能温湿度报警系统&…...

告别蓝绿失真!用Water-Net(TensorFlow 1.13.1)实战水下图像增强,从环境配置到效果测试保姆级教程

水下图像增强实战:用Water-Net消除蓝绿偏色的完整指南 每次潜水归来,看着相机里那些被海水"吃掉"色彩的模糊照片,总让人感到遗憾。水下摄影爱好者、海洋生物研究者或是水下工程检测人员,都面临着一个共同的难题——如何…...

从医疗分割到图像修复:手把手复现一个你自己的MIMO-UNet去模糊模型

从医疗分割到图像修复:手把手复现一个你自己的MIMO-UNet去模糊模型 在计算机视觉领域,图像去模糊一直是个极具挑战性的任务。想象一下,你拍摄了一张珍贵的照片,却因为手抖或对焦不准而变得模糊不清——这正是图像去模糊技术要解决…...

从色温窗口到增益系数:一种硬件友好的实时白平衡方案

1. 为什么我们需要硬件友好的白平衡方案 每次用手机拍出来的照片颜色不对劲,你是不是总觉得是手机摄像头不行?其实很多时候问题出在白平衡上。白平衡就像是给照片戴了一副"有色眼镜",它的任务是消除光源色温对颜色的影响&#xff0…...

Home Assistant美的设备本地控制终极指南:摆脱云端依赖,实现快速响应

Home Assistant美的设备本地控制终极指南:摆脱云端依赖,实现快速响应 【免费下载链接】homeassistant-midea-air-appliances-lan This Home Assistant custom component adding support for controlling Midea air conditioners and dehumidifiers on lo…...

【优化位置】基于matlab配电系统中电容的最佳位置(降低损耗和电压改善)【含Matlab源码 15346期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…...

杰理之linein复用CMD检测配置【篇】

...

如何快速配置微信支付证书:3步完成自动化下载与解密

如何快速配置微信支付证书:3步完成自动化下载与解密 【免费下载链接】CertificateDownloader Java 微信支付 APIv3 平台证书的命令行下载工具 项目地址: https://gitcode.com/gh_mirrors/ce/CertificateDownloader 还在为微信支付APIv3平台证书管理而烦恼吗&…...

AI原生开发,到底是个啥?

我第一次听说“AI原生开发”时,差点以为是AI自己写代码说实话,刚听到“AI原生开发”这个词,我脑子里立马浮现出一个画面:一台电脑坐在办公桌前,一边喝咖啡一边敲键盘,还时不时叹口气说“这需求真难搞”。当…...

JBoltAI工业数智化SOP:助力“人工智能+”工业新发展

在“人工智能”工业浪潮席卷而来的当下,工业领域的数智化转型成为必然趋势。JBoltAI工业数智化SOP产品,凭借其独特的功能架构,为工业企业的标准化作业流程管理带来了新的思路与解决方案。清晰架构,高效管理SOP内容JBoltAI工业数智…...

如何用roop-unleashed快速制作高质量AI换脸视频:完整入门指南

如何用roop-unleashed快速制作高质量AI换脸视频:完整入门指南 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 想要在几分钟内制作出专业级AI换脸…...

手把手教你用Python处理ConceptNet中文数据:从CSV读取到关系查询(附繁简体转换)

手把手教你用Python处理ConceptNet中文数据:从CSV读取到关系查询(附繁简体转换) 在自然语言处理领域,知识图谱正成为提升模型理解能力的关键工具。ConceptNet作为开放多语言知识图谱,其中文部分包含丰富的概念关系数据…...

从向量旋转到切线求解:一种高效的几何算法实现

1. 为什么我们需要更优雅的切线求解方法 在几何计算中,求圆外一点到圆的切线切点坐标是一个经典问题。传统解法通常采用联立方程法:先建立圆的方程和切线方程,然后解这个方程组。这种方法在纸笔计算时还算可行,但一旦要编写代码实…...

避坑指南:瑞萨e2studio中DTC地址绑定的那些坑——以RA2E1内存操作为例

瑞萨RA2E1开发实战:DTC地址绑定疑难解析与高效调试方案 在嵌入式开发领域,瑞萨RA2E1系列MCU凭借其出色的低功耗特性和丰富的外设资源,成为物联网终端设备的理想选择。然而,当开发者深入使用e2studio集成开发环境时,往往…...