备战蓝桥杯Day19 - 堆排序基础知识

2024-02-29 02:28

本文主要是介绍备战蓝桥杯Day19 - 堆排序基础知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、每日一题 - 填充

详细题解

s = input()  # 输入字符串
n = len(s)  # 定义字符的长度
judge = ["00", "11", "0?", "1?", "?0", "?1", "??"]
# 把所有的情况一一列举出来
count = 0  # 设置计数器
i = 1  # 设置循环条件索引值
while i < n:if s[i-1:i+1] in judge:  # 在循环中将字符串遍历进行判断count += 1  # 如果符合计数器 + 1i += 2  # 并将索引值向后移动2个else:i += 1 # 不符合条件索引值向后移1个print(count)  # 最后打印出结果

 我觉得最难的在于不纠结?到底是0还是1,而是直接把他看成数字去跟已知情况进行判断。我一直在纠结?到底应该什么时候是1,什么时候是0,把自己的思路的限制住了。

二、堆排序

预备基础知识 - 树

 一些基本知识:

根节点:每棵树最上面的单独的一个节点,如上图A为根节点。

叶子节点:每棵树中最末梢的,不再有分支的节点。如上图B,C,H,I,P,Q,K,L,M,N为叶子节点。

树的深度(高度):层数是几,深度(高度)是几。如上图树的深度(高度)是4,因为有4层。

节点的度:某个分叉的节点分了几个叉,节点的度就是几。如上图E的度为2,F的度为3.

树的度: 节点的度中最大的数,就是树的度。如上图节点的度最大为A分了6个叉,所以树的度为6

孩子节点/父节点:挂在某个节点下面,称为这个节点的孩子节点,某个节点称为父节点。如上图中E是父节点,I,J是孩子节点。

子树:在树中单独拎出来一些节点还能组成树的,称为这棵树的子树。如上图中E,F,G单独拎出来后还是一棵树,故能称为是A这棵树的子树。

这些都是按照我理解的概念写出来的,可能不完善也不是很清楚,最好还是参考课本上的定义概念。

二叉树

 满二叉树、完全二叉树

 

完全二叉树:最下一层可以不满,但节点序号必须按照从左到右排序的方式进行排列

 二叉树的存储方式

 因为堆排序要用到二叉树的存储方式,所以要了解一下

 在堆排序中我们使用顺序存储方式,那么就是把数字放到列表中,在下图中找到父节点与左孩子和右孩子节点之间的数字关系,以方便我们去寻找数据。

 堆排序 - 什么是堆

 

 堆的向下调整

节点的左右子树都是堆,但自身不是堆,可以通过一次次的向下调整来将其变成一个堆。

堆排序的过程

ok代码实现问题明日再学习。

三、学习碎碎念

慢慢开始上难度了,今天上算法课回答问题了,根据之前自己的冒泡排序的笔记,果然是一份耕耘一份收获啊。也想对自己说别太浮躁,别太着急,慢慢来,一步一个脚印,踏踏实实的,努力的去迎接自己的未来。

这篇关于备战蓝桥杯Day19 - 堆排序基础知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757304

相关文章

在Java中实现堆排序的步骤详解

《在Java中实现堆排序的步骤详解》堆排序是一种基于堆数据结构的排序算法,堆是一种特殊的完全二叉树,堆排序利用堆的性质通过一系列操作将数组元素按升序或降序排列,本文给大家介绍了如何在Java中实现堆排... 目录引言一、堆排序的基本原理二、堆排序的实现步骤三、堆排序的时间复杂度和空间复杂度四、堆排序的工作流

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

关于回调函数和钩子函数基础知识的整理

回调函数:Callback Function 什么是回调函数? 首先做一个形象的比喻:   你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,手机

有关机械硬盘的基础知识

1,机械硬盘的品牌   目前市场中常见的笔记本电脑的机械硬盘品牌主要有希捷、西部数据、三星等。   2,机械硬盘的容量   硬盘容量,即硬盘所能存储的最大数据量。虽然笔记本电脑硬盘的容量会因单位密度的提升而增加,不过和台式电脑的大容量比起来,笔记本电脑硬盘的容量仍然落后许多。笔记本电脑的硬盘除了对磁盘有体积较小和数量较少的要求之外,对功耗、耐用程度、抗震性及成本等的考虑,也让笔记

OpenGL ES学习总结:基础知识简介

什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。 为桌面版本OpenGL 的一个子集。 OpenGL ES管道(Pipeline) OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工