算法笔记(二)—— 认识N(logN)的排序算法
递归行为的时间复杂度估算

整个递归过程是一棵多叉树,递归过程相当于利用栈做了一次后序遍历。
对于master公式,T(N)表明母问题的规模为N,T(N/b)表明每次子问题的规模,a为调用次数,加号后面表明,除去调用之外,剩余语句的复杂度是多少,算出d。根据上次三个判断公式进行算法时间复杂度计算。
归并排序(递归实现)
求出中点位置,先将左边部分排好序,再将右侧部分排好序,再整合(双指针),使得整体有序。
时间复杂度O(NlogN) ;空间复杂度O(N)
小和问题

看某个数右侧有多少数比该数大,那么就有这么多个该数对最后结果造成贡献(使用归并排序,在归并过程中进行计算)。和传统merge相比,在于左组数等于右组数时,在小和问题中一定要先拷贝右组的数。
逆序对问题

同小和问题,只不过换成了判断左数组的数大于右数组的数。
315. 计算右侧小于当前元素的个数 - 力扣(LeetCode)
https://leetcode.cn/problems/count-of-smaller-numbers-after-self/
快速排序

问题一:准备一个变量,表示小于等于区域的右边界,如果当前数小于等于num,则把当前数和区域下一个数做交换,区域往右扩一个位置,当前数跳下一个。若当前数大于num,那么跳下一个数即可。
问题二:和问题一类似,两个区域,一个为小于区域的右边界i,一个为大于区域的左边界j,两个变量。当前数小于num,当前数和i数交换,i++,当前数跳下一个。当前数等于num,直接跳下一个。当前数大于num,当前数和j数交换,j--,当前数不动。
那么快速排序,就是以数组内最后一个数作为num,重复上述问题二,最后将大于区域第一个数与最后一个数交换,递归进行即可。
时间复杂度O(N^2)
但如果选取num是随机的,选出来与最后一个数交换然后做划分,可以避免出现最坏情况。
时间复杂度O(NlogN)
相关文章:
算法笔记(二)—— 认识N(logN)的排序算法
递归行为的时间复杂度估算 整个递归过程是一棵多叉树,递归过程相当于利用栈做了一次后序遍历。 对于master公式,T(N)表明母问题的规模为N,T(N/b)表明每次子问题的规模,a为调用次数,加号后面表明,除去调用之…...
最长湍流子数组——滚动窗口,双指针,暴力求解
978. 最长湍流子数组难度中等216收藏分享切换为英文接收动态反馈给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。更正式地来说,当 arr 的子数组 A[i]…...
45.在ROS中实现global planner(1)
前文move_base介绍(4)简单介绍move_base的全局路径规划配置,接下来我们自己实现一个全局的路径规划 1. move_base规划配置 ROS1的move_base可以配置选取不同的global planner和local planner, 默认move_base.cpp#L70中可以看到是…...
Java中导入、导出Excel——HSSFWorkbook 使用
一、介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要…...
c#数据结构-列表
列表 数组可以管理大量数组,但缺点是无法更变容量。 创建小了不够用,创建大了浪费空间。 无法预测需要多少大小的时候,可能范围越大,就会浪费越多的空间。 所以,你可能会想要一种可以扩容的东西,代替数组…...
Sa-Token实现分布式登录鉴权(Redis集成 前后端分离)
文章目录1. Sa-Token 介绍2. 登录认证2.1 登录与注销2.2 会话查询2.3 Token 查询3. 权限认证3.1 获取当前账号权限码集合3.2 权限校验3.3 角色校验4. 前后台分离(无Cookie模式)5. Sa-Token 集成 Redis6. SpringBoot 集成 Sa-Token6.1 创建项目6.2 添加依…...
leaflet显示高程
很多地图软件都能随鼠标移动动态显示高程。这里介绍一种方法,我所得出的。1 下载高程数据一般有12.5m数据下载,可惜精度根本不够,比如mapbox的免费在线的,或者91卫图提供百度网盘打包下载的,没法用,差距太大…...
电子学会2022年12月青少年软件编程(图形化)等级考试试卷(三级)答案解析
目录 一、单选题(共25题,共50分) 二、判断题(共10题,共20分) 三、编程题(共3题,共30分) 青少年软件编程(图形化)等级考试试卷(三级) 一、单选题(共25题,共50分) 1. 默认小猫角色…...
ubuntu 驱动更新后导致无法进入界面
**问题描述: **安装新ubuntu系统后未禁止驱动更新导致无法进入登录界面。 解决办法: 首先在进入BIOS中,修改设置以进行命令行操作,然后卸载已有的系统驱动,最后安装新的驱动即可。 开机按F11进入启动菜单栏…...
解决访问GitHub时出现的“您的连接不是私密连接”的问题!
Content问题描述解决办法问题描述 访问github出现您的连接不是私密连接问题,无法正常访问,如下图所示: 解决办法 修改hosts文件。hosts文件位于:C:\Windows\System32\drivers\etc\hosts 首先在https://www.ipaddress.com/查找两…...
初识数据仓库
一、什么是数据仓库数据库 --> OLTP:(on-line transaction processing)翻译为联机事务处理记录某类业务事件的发生,如购买行为,银行交易行为,当行为产生后,系统会记录是谁在何时何地做了何事…...
FilenameUtils工具类部分源码自研
FilenameUtils工具类部分源码自研getExtension(orgFileName)源码如下逐行分析getExtension(orgFileName)源码如下 public class FilenameUtils {public static int indexOfExtension(String fileName) throws IllegalArgumentException {if (fileName null) {return -1;} els…...
【前端领域】3D旋转超美相册(HTML+CSS)
世界上总有一半人不理解另一半人的快乐。 ——《爱玛》 目录 一、前言 二、本期作品介绍 3D旋转相册 三、效果展示 四、详细介绍 五、编码实现 index.html style.css img 六、获取源码 公众号获取源码 获取源码?私信?关注?点赞&…...
Java——聊聊JUC中的原子变量类
文章目录: 1.什么是原子变量类? 2.AtomicInteger(基本类型原子变量类) 3.AtomicIntegerArray(数组类型原子变量类) 4.AtomicMarkableReference(引用类型原子变量类) 5.AtomicInteger…...
elasticsearch索引与搜索初步
ES支持cURL交互,使用http请求完成索引和搜索操作,最基本的格式如下:创建索引我们可以使用PUT方法创建索引,通过指定“索引”、“类型”、“文档ID”锁定文档,通过参数指定文档的数据。红色部分的路由分别指定了“索引”…...
【Python】多线程与多进程学习笔记
本文是一篇学习笔记,学习内容主要来源于莫凡python的文档:https://mofanpy.com/tutorials/python-basic/threading/thread 多线程 线程基本结构 开启子线程的简单方式如下: import threadingdef thread_job():print(This is a thread of %…...
MySQL基础知识点
1.在Linux上安装好MySQL8.0之后,默认数据目录的具体位置是什么?该目录下都保存哪些数据库组件?在目录/usr/sbin、/usr/bin、/etc、/var/log 分别保存哪些组件? 答:默认数据目录:/var/lib/mysql。保存有mysq…...
代码随想录算法训练营第五十九天| 583. 两个字符串的删除操作、72. 编辑距离
Leetcode - 583dp[i][j]代表以i-1结尾的words1的子串 要变成以j-1结尾的words2的子串所需要的次数。初始化: "" 变成"" 所需0次 dp[0][0] 0, ""变成words2的子串 需要子串的长度的次数,所以dp[0][j] j, 同理,dp[i][0] …...
指针引用字符串问题(详解)
通过指针引用字符串可以更加方便灵活的使用字符串。 字符串的引用方式有两种,下面简单介绍一下这两种方法。 1.用字符数组来存放一个字符串。 1.1 可以通过数组名和下标来引用字符串中的一个字符。 1.2 还可以通过数组名和格式声明符%s输出整个字符串。 具体实…...
数据结构——哈夫曼树编程,输入权值实现流程图代码
一、须知 本代码是在数据结构——哈夫曼树编程上建立的,使用时需将代码剪切到C等软件中。需要输入权值方可实现流程图,但是还需要按照编程换算出的结果自己用笔画出流程图。 下面将代码粘贴到文章中,同时举一个例子:二、代…...
string字符串基础相关知识
课程要求1.string的三种创建方式2.string常用方法空格处理,空值判断,替换操作,字符串截取,字符串拆分,字符索引访问拼接与性能,删除操作3.理解 string 不可变性,能在循环拼接场景中使用 StringB…...
告别性能瓶颈:如何用NVIDIA Profile Inspector释放显卡90%潜能?
告别性能瓶颈:如何用NVIDIA Profile Inspector释放显卡90%潜能? 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 为什么官方显卡控制面板永远像个"锁着的工具箱"&#…...
Halcon一维码识别避坑指南:从模糊图像到精准解码
Halcon一维码识别实战:攻克模糊图像与复杂场景的五大策略 在物流分拣线上,传送带以每秒2米的速度运行,扫码枪却频繁报错——这不是设备故障,而是Halcon参数配置与图像预处理策略的缺失。当条形码出现在褶皱包装、反光表面或运动模…...
OpenClaw监控方案:Qwen3.5-4B-Claude模型异常任务预警系统
OpenClaw监控方案:Qwen3.5-4B-Claude模型异常任务预警系统 1. 为什么需要自动化监控方案 去年夏天的一个深夜,我被连续不断的手机震动声惊醒。打开电脑发现某个数据处理脚本已经运行了18小时——它本该在2小时内完成。更糟糕的是,这个错误导…...
VR视频转换终极指南:让3D内容在普通设备上轻松播放
VR视频转换终极指南:让3D内容在普通设备上轻松播放 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mirro…...
类型注解写错=线上Bug潜伏!:3个导致Pydantic崩溃、FastAPI 500、mypy静默失效的致命细节
第一章:类型注解写错线上Bug潜伏!:3个导致Pydantic崩溃、FastAPI 500、mypy静默失效的致命细节泛型未参数化:List 而非 List[str] 的隐式陷阱 Pydantic v2 强制要求泛型类型必须显式参数化。若仅写 List(而非 List[str…...
如何实现SASM多语言支持:完整国际化配置与翻译指南
如何实现SASM多语言支持:完整国际化配置与翻译指南 【免费下载链接】SASM SASM - simple crossplatform IDE for NASM, MASM, GAS and FASM assembly languages 项目地址: https://gitcode.com/gh_mirrors/sa/SASM SASM(Simple Assembler IDE&…...
英雄联盟智能助手:5个核心功能彻底改变你的游戏体验
英雄联盟智能助手:5个核心功能彻底改变你的游戏体验 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为繁琐的游戏…...
开源项目主题系统的3大核心机制深度解析:从CSS变量到动态切换的完整实现方案
开源项目主题系统的3大核心机制深度解析:从CSS变量到动态切换的完整实现方案 【免费下载链接】vue-vben-admin vbenjs/vue-vben-admin: 是一个基于 Vue.js 和 Element UI 的后台管理系统,支持多种数据源和插件扩展。该项目提供了一个完整的后台管理系统&…...
3步彻底解决Umi-OCR Rapid版本HTTP服务无响应问题:参数配置完全指南
3步彻底解决Umi-OCR Rapid版本HTTP服务无响应问题:参数配置完全指南 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://git…...
