bite阶段性测试_数据结构

解决问题之前我们要了解什么是度,特别是二叉树中的度,和图论中的度的定义是不同的

什么是度

在图论中,一个节点(或称为顶点)的是指与该节点直接相连的边的数量。度是用来衡量一个节点与其他节点连接紧密程度的指标。在无向图和有向图中,度的概念有所不同:

  1. 无向图中的度: 对于无向图,一个顶点的度简单地等于连接到该顶点的边的数量。例如,如果一个顶点与三条边相连,那么该顶点的度是3。
  2. 有向图中的度: 在有向图中,度被分为两种:
    • 入度(In-degree:入度是指指向该顶点的边的数量。
    • 出度(Out-degree:出度是指从该顶点出发指向其他顶点的边的数量。

图论和多(>=2)叉树对 度 的不同定义

二叉树中,节点的度通常是指该节点拥有的子节点的数量,而不是与该节点直接相连的边的数量。因为二叉树是一种特殊的树结构

在图论中,节点的度是指与该节点直接相连的边的数量,而不涉及子节点的概念。因此,图论中的节点度和二叉树中节点的度有所不同

二叉树中,度为0的节点通常指的是叶子节点,即没有子节点的节点,而不是脱离其他顶点的节点

回归本题

树的总节点数 ( n ) 等于所有节点的度数之和再加上1

总节点数 = 1 + 叶子节点数*0 + 度为1的节点数*1 + 度为2的节点数*2

总节点数 = 叶子节点数+度为1的节点数+度为2的节点数

399 = 叶子节点数*0 + 度为1的节点数*1 + 199*2

399 = 叶子节点数+度为1的节点数+度为2的节点数

解得:叶子节点200 度为一节点0

结论:

总结点数与所有节点度数和关系:

      1. 总节点数 = 1 + 叶子节点数*0 + 度为1的节点数*1 + 度为2的节点数*2
      2. 总节点数 = 叶子节点数+度为1的节点数+度为2的节点数//包有的方程

选择排序与堆排序

选择排序是啥,堆排序为啥基于选择排序

选择排序是什么

  •   工作原理:选择排序每次从未排序的部分选择最小(或最大)的元素,然后将其放到已排序部分的末尾。
  • 特点:在每次迭代中,选择排序只需进行一次交换操作,因此比冒泡排序的交换次数少。

选择排序和冒泡排序区别

选择排序和冒泡排序思想是一样的,只是选择排序优化了实现步骤

选择排序在每次迭代中选择未排序部分的最小(或最大)元素,并将其与当前位置交换,从而减少了交换的次数

Next指向前驱?

通常,prev叫做前驱, next叫做后继节点

筛选法是啥,筛选法建堆是怎么建堆。筛选法作用

筛选法建堆是一种在堆排序算法中用于构建堆的方法。它通常是从数组的中间向前遍历,对每个非叶子节点执行一次筛选操作,使得以该节点为根的子树满足堆的性质。

具体步骤如下:

  1. 从最后一个非叶子节点开始向前遍历,直到根节点。这些非叶子节点是数组中索引为 n/2 - 1 到 0 的元素,其中 n 是数组的长度。
  2. 对于每个非叶子节点,执行一次筛选操作(也称为下沉操作):
    • 比较该节点与其左右子节点的值,找到最大(或最小)的节点。
    • 如果子节点的值大于(或小于)该节点的值,则交换两者的位置。
    • 继续递归向下进行,直到满足堆的性质为止。

通过这样的操作,可以将一个无序的数组构建成一个堆,使得堆的根节点具有最大(或最小)的值,且满足堆的性质。

堆排序怎么排来着

上述筛选法建堆排序

六大排序稳定性?

  1. 冒泡排序(Bubble Sort):稳定。
  2. 选择排序(Selection Sort):不稳定。在选择最小元素的过程中可能破坏相等元素的相对位置。
  3. 插入排序(Insertion Sort):稳定。相等元素的相对位置在排序前后不变。
  4. 快速排序(Quick Sort):不稳定。对相等元素可能会进行交换,导致相对位置变化。
  5. 归并排序(Merge Sort):稳定。在合并过程中,相等元素的相对位置保持不变。
  6. 堆排序(Heap Sort):不稳定。在堆化的过程中可能会交换相等元素的位置,导致不稳定性。

只有快排和选择排序堆排序不稳定

插入和归并都稳定

为啥选择和冒泡基本思路相同,选择却不稳定?

举个例子,考虑序列 [2a, 3, 2b],其中元素 2a 2b 相等,但是它们的相对位置是不同的。如果选择排序先选中 2a,然后将其移动到已排序序列的末尾,那么排序后的序列可能变为 [3, 2b, 2a],导致相对位置的改变,从而不满足稳定性的要求。

--------------------------------------------------------------------------

快排

快排升序,左先走/右先走?为什么?

为啥碰到10?

当升序时,普通快排一定要右先走来保证相遇点为小于等于key的点

反之,降序左先走

普通快排code

void QuickSort1(int* a, int left, int right)

{

          // 区间只有一个值或者不存在就是最小子问题

          if (left >= right)

                   return;

          // 小区间选择走插入,可以减少90%左右的递归

          if (right - left + 1 < 10)

          {

                   InsertSort(a + left, right - left + 1);

          }

          else

          {

                   int begin = left, end = right;

                   // 100 200,注意的是left不一定是0

                   // [left, right]区间中的随机数做key

                   //int randi = rand() % (right - left + 1);

                   //randi += left;

                   //Swap(&a[left], &a[randi]);

                   // 三数取中

                   int midi = GetMidi(a, left, right);

                   //printf("%d\n", midi);

                   Swap(&a[left], &a[midi]);

                   //PrintArray(a+left, right-left+1);

                   int keyi = left;

                   while (left < right)

                   {

                             // right先走,找小

                             while (left < right && a[right] >= a[keyi])

                             {

                                      --right;

                             }

                             // left再走,找大

                             while (left < right && a[left] <= a[keyi])

                             {

                                      ++left;

                             }

                             Swap(&a[left], &a[right]);

                   }

                   Swap(&a[left], &a[keyi]);

                   keyi = left;

                   // [begin, keyi-1]keyi[keyi+1, end]

                   QuickSort1(a, begin, keyi - 1);

                   QuickSort1(a, keyi + 1, end);

          }

}

挖坑法

前后指针法

-------------------------------------------------------------------------------

归并排序code

大体思路没问题,还差一点没写完不影响理解

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Q1营收稳健增长,云从科技如何在“百模大战”的险中求稳?

自从迈入大模型时代&#xff0c;AI行业可谓“一天一个样”。越来越多的企业涌现&#xff0c;舆论热议从未断绝。 但就像所有技术必须经历的那些考验&#xff0c;在现实尺度下&#xff0c;AI顺利走进商业化世界&#xff0c;仍然是少部分玩家掌握的稀缺能力。个中原因不尽相同&a…

【C++】学习笔记——string_2

文章目录 六、string类2. 反向迭代器const迭代器 string类对象的容量操作&#xff08;补&#xff09;size() 3. string类的元素访问4. string类的修改 未完待续 结合文档食用~ 六、string类 2. 反向迭代器 一般来说&#xff0c;迭代器都是正向的遍历容器&#xff0c;虽然可以…

MySQL与金蝶云星空对接集成执行查询语句-v2打通销售退货新增V1

MySQL与金蝶云星空对接集成执行查询语句-v2打通销售退货新增V1 数据源系统:MySQL mysql是一个关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;所谓的关系型数据库&#xff0c;是建立在关系模型基础上的数据库&#xff0c;借助于集合代数等数学概念和方法来处理数…

[华为OD] C卷 服务器cpu交换 现有两组服务器QA和B,每组有多个算力不同的CPU 100

题目&#xff1a; 现有两组服务器QA和B,每组有多个算力不同的CPU,其中A[i]是A组第i个CPU的运算能 力&#xff0c;B[i]是B组第i个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。 为了让两组服务器的算力相等&#xff0c;允许从每组各选出一个CPU进行一次交换。 求两…

【学习vue 3.x】(二)组件应用及单文件组件

文章目录 章节介绍本章学习目标学习前的准备工作Vue.js文件下载地址 组件的概念及组件的基本使用方式组件的概念组件的命名方式与规范根组件局部组件与全局组件 组件之间是如何进行互相通信的父子通信父子通信需要注意的点 组件的属性与事件是如何进行处理的组件的属性与事件 组…

Redis---------实现查询缓存

目录 数据库与缓存之间的工作业务逻辑&#xff1a; 接下来看查询缓存代码实现&#xff0c;主要是捋清楚业务逻辑&#xff0c;代码实现是死的&#xff1a; Controller: Service: P37作业实现&#xff1a;总体逻辑跟上面的业务逻辑差不多 Controller&#xff1a; Service&#…

2024年汉字小达人活动还有5个月开赛:来做18道历年选择题备考吧

距离2024年第11届汉字小达人比赛还有五个多月的时间&#xff0c;如何利用这段时间有条不紊地备考呢&#xff1f;我的建议是两手准备&#xff1a;①把小学1-5年级的语文课本上的知识点熟悉&#xff0c;重点是字、词、成语、古诗。②把历年真题刷刷熟&#xff0c;这对了解汉字小达…

基于RK1126的小型化低功耗AI相机,支持人体特征识别、人脸特征识别、案例帽识别等

提供可定制的⼀套 AI相机软硬件开发平台&#xff0c; 硬件采⽤ RockchipRV1126处理器解决 ⽅案&#xff0c;可选择搭配 SonyIMX系列传感器&#xff0c;POE供电与数据传输&#xff0c;采⽤ 38板标准结构设计&#xff0c;快速按需定制外壳&#xff0c;⽀撑从开发到验证到批量⽣产…

64、二分-搜索二维矩阵

思路&#xff1a; 通过使用二分方式&#xff0c;对于每行进行二分&#xff0c;因为每行的最后一个数小于下一行的第一个数&#xff0c;我们就可以依次二分。首先取出行数N&#xff0c;然后从0-N进行二分&#xff0c;如果mid最后一个数小于目标值说明0-mid中没有&#xff0c;舍弃…

接口测试 - postman

文章目录 一、接口1.接口的类型2. 接口测试3. 接口测试流程4. 接口测试用例1. 测试用例单接口测试用例-登录案例 二、HTTP协议1. HTTP请求2. HTTP响应 三、postman1. 界面导航说明导入 导出用例集 Get请求和Post请求的区别:2.postman环境变量和全局变量3. postman 请求前置脚本…

kotlinDSL控制的安卓项目导入已存在的模块后sync报错

原因很明显&#xff0c;但是我还找了好久 因为在import时并没有选择groove还是kotlin控制&#xff0c; 所以默认为groovy控制的&#xff0c;然而主项目是由kotlin dsl控制的grale行为。 原因清楚之后&#xff0c;就可以去检查一下&#xff0c;项目里是否包含了settings.gradle和…

NASA数据集——VIIRS每日 L3深蓝气溶胶网格产品(AERDB_D3_VIIRS_SNPP),以 1 x 1 度

VIIRS/SNPP Deep Blue Level 3 monthly aerosol data, 1 degree x1 degree grid 简介 美国国家航空航天局&#xff08;NASA&#xff09;的可见红外成像辐射计套件&#xff08;VIIRS&#xff09;标准三级&#xff08;L3&#xff09;每月深蓝气溶胶产品来自苏米国家极轨伙伴关系…