算法day05 master公式估算递归时间复杂度 归并排序 小和问题 堆排序

news2024/9/20 10:58:11

2.认识O(NlogN)的排序_哔哩哔哩_bilibili

         master公式

        有这样一个数组:【0,4,2,3,3,1,2】;假设实现了这样一个sort()排序方法,

将数组二分成左右两等分,使用sort()对左右两个小数组进行排序,就满足master公式的使用;

或者将数组平均分成三等分,n等分,都满足master公式。



      归并排序

                  

 小和问题

        原数组一分为二,左数组内部求和,右数组内部求和,左右数组比较求和,将三部分小和相加求和。

        左数组内部求和,右数组内部求和的过程就是原数组一分为二小和相加求和的过程。

        问题一:

                定义一个左边界,左指针

                遍历数组,从数组第一个元素开始比较:

                        如果比num值大直接跳过,

                        如果比num值小将边界长度+1,指针右移1位

                直到下标越界,就实现了遍历一遍整个元素时间复杂度o(n),空间复杂度0(1)

        问题二:

                定义一个左边界,左指针,右边界,右指针;

                从数组第一个元素开始比较: 默认先调用左指针

                        如果比num值大将右边界长度+1,右指针左移1位,调用右指针

                        比num值小将左边界长度+1,左指针右移1位,调用左指针。

                直到左右指针相遇。

                



        堆排序

                  通过堆排序算法实现将给定的数组元素按大小构建一个完全二叉树,并且二叉树分为最大堆和最小堆两种类型。

                  最大堆每颗树的父节点是当前树的最大值或者最大值之一;

                  最小堆每棵树的父节点是当前树的最小值或者最小值之一。

                heapify()

                heapinsert()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1939354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学建模~~~SPSS相关和回归分析

目录 1.双变量相关分析 1.1理论基础 1.2简单散点图的绘制介绍 1.3相关性分析 1.4分析相关性结果 2.简单线性回归分析 2.1简单概括 2.2分析过程 2.3结果分析 3.曲线回归分析 3.1问题介绍 3.2分析过程 3.3结果分析 1.双变量相关分析 1.1理论基础 双变量相关分析并不…

十七、(正点原子)Linux LCD驱动

一、Framebuffer设备 在 Linux 中应用程序通过操作 RGB LCD 的显存来实现在 LCD 上显示字符、图片等信息。 先来看一下裸机 LCD 驱动如下: ①、初始化 I.MX6U 的 eLCDIF 控制器,重点是 LCD 屏幕宽(width)、高(height)、 hspw、 hbp、 hfp、 vspw…

【MySQL进阶之路 | 高级篇】索引失效

1. SQL查询优化 我们可以从下面几个方面进行数据库调优: 索引失效,没有充分利用到索引-->索引建立关联查询太多JOIN-->SQL优化服务器调优及各个参数设置-->调整my.cnf数据过多-->分库分表 虽然SQL查询优化的技术很多,但大方向…

Google最新开源大语言模型:Gemma 2介绍及其微调(上篇)

引言 简介 Gemma 2模型介绍 架构设计 训练方法 后训练优化 关键发现:知识蒸馏的影响 性能评估 使用 体验:Hugging Chat 如何提示 Gemma 2 基于Hugging Face Transformers 结论与展望 模型汇总 引言 两岸荔枝红,万家烟雨中。 小伙伴们好&am…

蓝桥杯Python算法竞赛常用的函数库

博客主页:音符犹如代码系列专栏:Python关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ ​ 目录 math collectcions heapq functool itertools 常用的库函数 m…

【学习笔记】Elasticsearch学习汇总(包含SpringData、Spark、Flink操作)

文章目录 前言数据类型种类ES解决什么问题ELK StackES是什么数据格式正排(正向)索引倒排索引创建索引索引查询索引删除创建文档(添加数据)自定义ID 简单查询类似于主键查询查询所有数据 修改数据全量修改局部修改 删除数据条件查询请求路径(不推荐)请求体全查询分页查询指定查询…

为什么基于 GPT-LLM 的大模型会认为 9.11 大于 9.9?

本心、输入输出、结果 文章目录 为什么基于 GPT-LLM 的大模型会认为 9.11 大于 9.9?前言GPT 大模型认为 9.9 和 9.11 谁大通义千问文心一言ChatGPT 4o为什么基于 GPT-LLM 的大模型会认为 9.11 大于 9.9?为什么基于 GPT-LLM 的大模型会认为 9.11 大于 9.9? 编辑 | 简简单单 O…

2024.7.16(使用光盘创建本地仓库、引入网络镜像仓库、创建自建仓库)

了解yum源安装软件包 了解常用的网络yum源 掌握本地和网络yum源配置 能够使用yum工具安装软件包 yum安装优点: rpm安装 (下载软件、单独安装、需要解决依赖关系) rpm -ivh xxx 手动添加依赖软件包 源码安装(configure make…

vue3【详解】跨组件通信 -- 依赖注入 provide inject

用于解决跨组件&#xff08;父组件与所有后代&#xff09;数据通信 提供数据 provide 传出数据的组件 &#xff08;通常为父辈组件&#xff09;提供数据 <script setup> import { provide } from vueprovide(/* 注入名 */ message, /* 值 */ hello!) </script>pro…

vivado FFT IP Core

文章目录 前言FFT IP 接口介绍接口简介tdata 格式说明 其他细节关于计算精度及缩放系数计算溢出架构选择数据顺序实时/非实时模式数据输入输出时序关于配置信息的应用时间节点 FFT IP 例化介绍控制代码实现 & 测试速度测试参考文献 前言 由于计算资源受限&#xff0c;准备将…

【Matlab】RBF径向基神经网络回归预测算法(附代码)

资源下载&#xff1a; 资源合集&#xff1a; 目录 一&#xff0c;概述 RBF 神经网络&#xff08;Radial Basis Function Neural Network&#xff09;是一种基于径向基函数的前向型神经网络。它的特点是具有快速的训练速度和良好的泛化性能。 RBF 神经网络的基本结构包括输入层…

探索 Electron:如何利用Electron和Vite打造高效桌面应用

Electron是一个开源的桌面应用程序开发框架&#xff0c;它允许开发者使用Web技术&#xff08;如 HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序&#xff0c;它的出现极大地简化了桌面应用程序的开发流程&#xff0c;让更多的开发者能够利用已有的 Web 开发技能…

三、建造者模式

文章目录 1 基本介绍2 案例2.1 Car 类2.2 CarBuilder 抽象类2.3 EconomyCarBuilder 类2.4 LuxuryCarBuilder 类2.5 CarDirector 类2.6 测试程序2.7 测试结果2.8 总结 3 各角色之间的关系3.1 角色3.1.1 Product ( 产品 )3.1.2 Builder ( 抽象建造者 )3.1.3 ConcreteBuilder ( 具…

电阻有哪些参数呢

电阻是电路中最常见的元件之一&#xff0c;它在控制电流、分压和保护电路等方面发挥着重要作用。了解电阻的主要参数对于选择和使用电阻至关重要。本文将详细介绍电阻的主要参数&#xff0c;包括电阻值、功率额定值、温度系数、容差、噪声、频率特性、体积和封装等。 1. 电阻值…

长模式下的分页

前提 如果开启了长模式&#xff0c;则必须同时开启分页模式&#xff0c;因为长模式弱化了分段模型而分段模型也确实有很多不足&#xff0c;不适应现在操作系统和应用软件的发展长模式也扩展了 CPU 的位宽&#xff0c;使得 CPU 能使用 64 位的超大内存地址空间所以&#xff0c;…

当一个程序员的博客突然变少

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 个人IP&#xff1a;shigen hello&#xff0c;伙伴们好久不见。马上到了八月&#xff0c;也是我在个人公众号…

JMeter介绍、安装配置以及快速入门

文章目录 1. JMeter简介2. JMeter安装配置3. JMeter快速入门 1. JMeter简介 Apache JMeter是一款开源的压力测试工具&#xff0c;主要用于测试静态和动态资源&#xff08;如静态文件、服务器、数据库、FTP服务器等&#xff09;的性能。它最初是为测试Web应用而设计的&#xff…

ETAS StackM配置及使用-stack监控

文章目录 前言Stack基本介绍StackM配置StackMTargetStackMGeneral Linker配置EcuM配置RTE配置集成与测试总结 前言 嵌入式C语言执行的软件中&#xff0c;stack溢出会导致程序执行异常&#xff0c;严重可能导致直接进硬件异常中断(hardfault)。软件执行过程中的stack监控是非常…

【JAVA多线程】Future,专为异步编程而生

目录 1.Future 2.CompletableFuture 2.1.为什么会有CompletableFuture&#xff1f; 2.2.使用 2.2.1.提交任务获取结果 2.2.2.回调函数 2.2.3.CompletableFuture嵌套问题 1.Future Java中的Future接口代表一个异步计算。其提供了一组规范用来对异步计算任务进行管理控制…

java项目(knife4j使用,静态资源未放在static资源包下,公共字段自动填充,Spring Cache与Spring Task)

Knife4j&#xff08;生成接口文档&#xff09; 使用swagger你只需要按照它的规范去定义接口及接口相关的信息&#xff0c;就可以做到生成接口文档&#xff0c;以及在线接口调试页面。官网:https://swagger.io/ Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。…