蓝桥杯---排序数组(leetcode第912题)
文章目录
- 1.题目重述
- 2.思路分析
- 3.代码解释
1.题目重述

题目的要求是不使用库函数或者是其他的内置的函数(就是已经实现好的函数),也就是这个排序的逻辑需要我们自己进行实现;
2.思路分析
其实这个例子也是很容易理解的,对吧,就是升序排列这个数组里面的元素罢了

思路的话:首先我们需要确定这个分类讨论的逻辑链,想要明白这个题目,你必须要明白那个颜色分类的题目,因为这两个题目的思路是完全一致的,可以看我之前对于颜色分类的那个题目的详细概述;
在那个颜色分类的题目里面,我们是0,1,2三个数字,但是在这个排序的数组里面,里面出现的数据很多,相当于是之前的那个题目的一个延伸,之前的颜色分类,我们使用三路划分,就是分为三个部分,定义了left,right和i对吧,然后这个i负责对于元素进行遍历,放到正确的位置上面去;

之前我们是使用大于1,等于1,小于1进行判断的,这个里面我们需要指定这个key,是按照大于key,小于key等于key进行判断的,当只有0,1,2三个元素的时候这个key就是1,也就是我们之前的那个颜色分类的题目了;
下面的这个里面的交换策略和指针的移动的策略和我们的颜色分类题目完全一致,不理解的话可以移步去看一下之前的那个文章;

其次,我们需要确定这个key应该如何进行选择和确定:
这个key实际上就是我们的数组里面的一个元素,但是他应该如何进行确定呢,这个答案就是:随机选择这个key的时候,他的时间复杂度是最低的,因此我们需要借助random函数随机从这个数组里面选择一个数据作为我们的key;
这个随机元素怎么求,下面的这个里面的nums后面的中括号里面的就是我们这个元素的下标:随机数模上数组元素的个数就是他的位置,加上我们的left就是对应数组位置的元素的小标,这个random%数组长度+left就是随机元素的下标的确定的方法;

3.代码解释
qsort是我们的自定义函数,实现这个数组元素的排序的功能,第9行确定我们的key的选择,之前颜色分类的时候left是-1,right是最后一个元素的下一个位置,但是在这个里面,我们的left是参数l-1,两个其实没区别,就是我们使用通式进行表示了;
qsort就是分别对于三个区域进行排序,这个while里面的逻辑和我们的颜色分类里面的逻辑是完全一致的,然后就是调用了下面的这个自定义的swap函数,仅此而已;

相关文章:
蓝桥杯---排序数组(leetcode第912题)
文章目录 1.题目重述2.思路分析3.代码解释 1.题目重述 题目的要求是不使用库函数或者是其他的内置的函数(就是已经实现好的函数),也就是这个排序的逻辑需要我们自己进行实现; 2.思路分析 其实这个例子也是很容易理解的ÿ…...
考研高数复习规范
前言 这里记录我的高数复习规范与规划,希望能给需要考研的同学一点启发 规范原因 高数的内容很多,关键的是:会做题、拿高分首先最重要的就是抓住概念。比如有界无界的概念,间断点的概念、极限的概念其次是做题过程中得到的方法…...
Stable diffusion只换衣服的方法
大概看了几个帖子感觉说的都不是很清楚,也大部分都是保持人物一致性,不能只改变衣服,自己摸索了一下,需要使用三个controlnet:一个openpose、一个lineart,一个depth,三个controlnet使用同一个参…...
无人机航迹规划: 梦境优化算法(Dream Optimization Algorithm,DOA)求解无人机路径规划MATLAB
一、梦境优化算法 梦境优化算法(Dream Optimization Algorithm,DOA)是一种新型的元启发式算法,其灵感来源于人类的梦境行为。该算法结合了基础记忆策略、遗忘和补充策略以及梦境共享策略,通过模拟人类梦境中的部分记忆…...
LlamaFactory可视化模型微调-Deepseek模型微调+CUDA Toolkit+cuDNN安装
LlamaFactory https://llamafactory.readthedocs.io/zh-cn/latest/ 安装 必须保证版本匹配,否则到训练时,找不到gpu cuda。 否则需要重装。下面图片仅供参考。因为cuda12.8装了没法用,重新搞12.6 cudacudnnpytorch12.69.612.6最新…...
算法12-贪心算法
一、贪心算法概念 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下最优的选择,从而希望导致全局最优解的算法。贪心算法的核心思想是“局部最优,全局最优”,即通过一系列局部最优选择,最…...
js实现点击音频实现播放功能
目录 1. HTML 部分:音频播放控件 2. CSS 部分:样式设置 3. JavaScript 部分:音频控制 播放和暂停音频: 倒计时更新: 播放结束后自动暂停: 4. 总结: 完整代码: 今天通过 HTML…...
matlab平面波展开法计算的二维声子晶体带隙
平面波展开法计算的二维声子晶体带隙,分别是正方与圆形散射体形成正方格子声子晶体,最后输出了能带图的数据,需要自己用画图软件画出来。 列表 平面波展开法计算二维声子晶体带隙/a2.m , 15823 平面波展开法计算二维声子晶体带隙/a4.m , 942…...
Spring Boot (maven)分页3.0版本 通用版
前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...
解决DeepSeek服务器繁忙问题
目录 解决DeepSeek服务器繁忙问题 一、用户端即时优化方案 二、高级技术方案 三、替代方案与平替工具(最推荐简单好用) 四、系统层建议与官方动态 用加速器本地部署DeepSeek 使用加速器本地部署DeepSeek的完整指南 一、核心原理与工具选择 二、…...
小项目第一天
总体实现流程图 智能称重模块流程图 定位追踪模块流程图 防盗报警模块流程图 密码解锁模块流程图 跨平台通信流程图...
家里WiFi信号穿墙后信号太差怎么处理?
一、首先在调制解调器(俗称:猫)测试网速,网速达不到联系运营商; 二、网线影响不大,5类网线跑500M完全没问题; 三、可以在卧室增加辅助路由器(例如小米AX系列)90~200元区…...
教育小程序+AI出题:如何通过自然语言处理技术提升题目质量
随着教育科技的飞速发展,教育小程序已经成为学生与教师之间互动的重要平台之一。与此同时,人工智能(AI)和自然语言处理(NLP)技术的应用正在不断推动教育内容的智能化。特别是在AI出题系统中,如何…...
SpringMVC新版本踩坑[已解决]
问题: 在使用最新版本springMVC做项目部署时,浏览器反复500,如下图: 异常描述: 类型异常报告 消息Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [int] not specifie…...
一款利器提升 StarRocks 表结构设计效率
CloudDM 个人版是一款数据库数据管理客户端工具,支持 StarRocks 可视化建表,创建表时可选择分桶、配置数据模型。目前版本持续更新,在修改 StarRocks 表结构方面进一步优化,大幅提升 StarRocks 表结构设计效率。当前 CloudDM 个人…...
老牌软件,如今依旧坚挺
今天给大家介绍一个非常好用的老牌电脑清理软件,这个软件好多年之前就有人使用了。 今天找出来之后,发现还是那么的好用,功能非常强大。 Red Button 电脑清理软件 软件是绿色版,无需安装,打开这个图标就能直接使用了…...
Plaid | 数据库切换历程:从 AWS Aurora MySQL 到 TiDB 的迁移之旅
原文来源: https://tidb.net/blog/231f2752 原文链接: https://plaid.com/blog/switching-to-tidb/ 翻译能力来自:Deepseek (ai.com ) 作者:Zander Hill Zander Hill 是 Plaid 的软件工程师和前工…...
MongoDB 扩缩容实战:涵盖节点配置、服务启动与移除操作
#作者:任少近 文章目录 一、扩容在245节点上配置配置config server:配置mongos启动config server安装工具mongosh添加245新节点到副本集配置分片副本集启动路由并分片 二、缩容Conf server上去掉server4shard上去掉server4mongos上去掉server4 一、扩容…...
Python学习心得字符串拼接的几种方法
一、字符串拼接的接种方法: 二、字符串拼接方法的运用: s1hello s2world #使用进行连接 print(s1s2)#使用字符串join()方法 print(.join([s1,s2]))#使用空字符串进行拼接print(*.join([hello,world,python]))#使用*进行拼接#直接拼接 print(helloworld)…...
USB2.03.0摄像头区分UVC相机在linux中的常用命令
这里是引用 一. USB2.0 & 3.0接口支持区分 1.1. 颜色判断 USB接口的颜色并不是判断版本的可靠标准,但根据行业常见规范分析如下: USB接口颜色与版本对照表: 接口颜色常见版本内部触点数量传输速度黑色USB2.04触点480 Mbps (60 MB/s)白…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)
注:文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件:STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...
