热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大连海事大学2019计算机考研,大连海事大学计算机考研——选择部分

题型判断(20*1)选择(10*2)简答(含树和森林的转化,时间复杂度,二叉排序树,平衡二叉树,KMP,Has

题型判断(20*1)+ 选择(10*2)+简答(含树和森林的转化,时间复杂度,二叉排序树,平衡二叉树,KMP,Hash表,程序输出)+证明(15*1) + 编程(15*1)

选择

Head Tail运算从一个表中,用Head(H),Tail(T)分离出一个元素原则:H操作提取第一个元素(原子或广义表);T操作去掉第一个元素(原子或广义表);写顺序是从后往前写例1,L=((( (a,b), e , ( (x), d) ))) 从中提取x初始:((( (a,b), e , ( (x), d) )))第一步,HH(去两个括号):( (a,b), e , ( (x), d) )第二步,T(去掉首元素): ( e , ( (x), d) )第三步,T (去掉首元素): ( ( (x), d) )第四步,H (提取首元素): ( (x), d)第五步,H (提取首元素): (x)第六步,H (提取首元素): x综上,从表中提取X的步骤为:HHHTTHH

2. 二维数组

二维数组,列(行)序为主序顺序存储,告诉一个点的地址,

每个元素占几个存储单元,求另一个点的地址。

分析:这种的画图做就可以,仔细些,难度不大。

3. 单链表存储队列

不带头的单链表存储队列,队头指向队头结点,队尾指向队尾结点,

在进行插入操作时:只需修改队尾指针

分析:链表是顺序存储,插入只能在队尾插入,因此只需要移动队尾指针

4.循环队列

循环队列是【0..m】,则数组的长度是m+1;

因为是队列,所以进队从后面进,移动rear指针;出队从前面出,移动front指针

5.折半查找

有序,顺序表,折半查找, 27个元素, 查找失败时,至少需要与关键字比较的次数:27

分析:折半查找查找失败至少需要与关键字的比较次数:log2(x)向下取整

6.m阶B树

1.非终端结点至多有m个指针,m-1个关键字

至少有(m/2向上取整)个指针,(m/2向上取整)-1 个关键字

2.根结点,至少两个指针(分支),1个关键字

3.所有叶子节点都在同一层上,且不带任何信息。

7.四维数组

例:四维数组B【1..3,2..8,0..5,1..8】以行主序 顺序存储,每个元素占2个存储单元,B【1,4,0,1】地址2000,则B【2,3,4,5】地址?

分析:四维数组B【1..3,2..8,0..5,1..8】(3,7,6,8)(3-1+1,8-2+1,5-0+1,8-1+1)

2000+【(2-1)*7*6*8 + (3-4)*6*8 + (4-0)*8 + (5-1)】*2 = 2648

8.排序

1.冒泡排序:逆序的情况下,比较次数最多

2.比较次数

最好的情况:直接插入排序: O(n)

冒泡:O(n) //最好,直接插,冒的好,即原数列有序

简单选择排序:O(n) //与原始序列无关(折半插入同样无关)

快速:O(n)

希尔: O(n)

归并: O【(log2(n)】

3.时间复杂度

平均情况:快速,希尔,归并,堆 (快些归队): O【nlog2(n)】

其他: O(n)

最坏情况:快速O(n),其他与平均相同

最好情况:简单插入排序:O(n)

4.空间复杂度

快速: O【log2(n)】

归并: O(n),

基数: O(rd),

其余: O(1)

5.辅助空间

堆排序 O(1)

直接选择排序O(1)

归并排序O(1)

快速排序O(log2n)

直接插入排序O(1)

5.每一趟都可以选出一个元素放到其最终位置上的是:

交换类(冒泡,快速)、选择类(简单选择,堆)

6.{50,80,30,40,70,60},快速排序,以第一个为基准,一趟后的结果:

77fe9f977e8e9bd7258dc1c59f236935.png快速排序

9. 查找

对长度为n的顺序表进行顺序查找时,查找失败需要与键值的比较次数:n+1

折半查找,查找失败至少需要的比较次数:log2(n)向下取整

10. 图

例1.G是有8个顶点的非连通简单无向图,该图最多有( 21 )条边

分析:全连通图 边 M 和 点N的关系满足:M = N(N-1) /2

反过来看,即问有()条边,最少有8个点

M = (16-21) , N ≥ 7 ;( 7对应的最大是21,最小是6对应的+1,15+1 = 16)

即当M有(16 -21)条边,连通图最少有 7个顶点, 非连通图最少有8个顶点

所以,M最大为21

例2.G是一个非连通无向图,共有(22-28)条边,该图至少有( 9 )个顶点。

分析:全连通图 边 M 和 点N的关系满足:M = N(N-1) /2

当M = (22-28), N(N-1) /2 ≥(22-28),解得:8≤N<9,即N = 8

因为非连通,所以连通的加1,即8+1 = 9

11. 循环队列

大小为6的数组实现循环队列,front = 3 ,rear = 0;删除一个,进队三个,

front = ? rear = ? (4 , 3)

分析:队列,先进先出。删除在队头front,进入在队尾rear。

5bd540537e66d1e05777a4c7e5c7a5c7.png

12. 图

邻接矩阵 - 稠密图

邻接多重表- 无向图

十字链表 - 有向图

邻接表 - 稀疏图

补充:

1. 一个堆又是一个完全二叉树

2.n个节点的huffman树,有(n+1)/2个叶子节点。

3.在一颗深度为3的树中,有2个度为3的节点,1个度为2的节点,度为0的节点为?

分析:此题中没有度为1的节点,总分支数 = 总节点数 - 1;

即 n0 + n2(1 )+ n3(2) = (2*3 + 1*2) -1

解得:n0 = 6;

4. 65个节点的完全二叉树,(根的层次号为1)的深度为:7

分析:1+2+4+8+16+32 = 63 6层最多63个节点,7层最(64-127)

结语:判断选择的先更新这些,肯定还有漏掉的,以后必定补充上。

明天开始更新答题的,必然每日一更,直到结束!!!

ff658ad1e75eed05b0b43150cb8938d9.png

举报/反馈



推荐阅读
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 深入理解线程、进程、多线程、线程池
    本文以QT的方式来走进线程池的应用、线程、进程、线程池、线程锁、互斥量、信号量、线程同步等的详解,一文让你小白变大神!为什么要使用多线程、线程锁、互斥量、信号量?为什么需要线程 ... [详细]
  • 8个常用的Vue指令
    8个常用的Vue指令v-text设置标签的文 ... [详细]
  • 上界|下界_重学C++:笔记C++基础容器&C++指针引用
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了重学C++:笔记C++基础容器&C++指针引用相关的知识,希望对你有一定的参考价值。文章目录 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 栈和队列的共同处和不同处
    本文主要介绍了栈和队列的共同处和不同处。栈和队列都是由几个数据特性相同的元素组成的有限序列,也就是线性表。队列是限定仅在表的一端插入元素、在另一端删除元素的线性表,遵循先进先出的原则。栈是限定仅在表尾进行插入或删除操作的线性表,遵循后进先出的原则。 ... [详细]
author-avatar
是非涩味_943
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有