IP地址分类 :
A类地址范围 : 0.0.0.0---127.255.255.255
B类地址范围 : 128.0.0.0---191.255.255.255。
C类地址范围 : 192.0.0.0---223.255.255.255
D类地址范围 : 224.0.0.0---239.255.255.255
E类地址范围 : 240.0.0.0---247.255.255.255
主定理
\(T(n) = a * T(n/b) + O(n^d)\)
- \(log(b, a) > d\) --> \(O(n^{log(b,a)})\)
- \(log(b, a) = d\) --> \(O(n^d * logn)\)
- \(log(b, a) < d\) --> \(O(n^d)\)
哈希表相关
构造哈希表的几种方法
1.直接定址法(取关键字的某个线性函数为哈希地址)
2.除留余数法(取关键值被某个不大于散列表长m的数p除后的所得的余数为散列地址)
3.平方取中法
4.折叠法
5.随机数法
6.数学分析法
常用方法是直接定址法和除留余数法
解决哈希冲突的方法
- 线性探测法 :若当前key与原来key产生相同的哈希地址,则当前key存在该地址之后没有存任何元素的地址中
- 二次探测法 :若当前key与原来key产生相同的哈希地址,则当前key存在该地址后偏移量为(1,2,3...)的二次方地址处
即 依次查询当前冲突地址 \(+1^2、-1^2、+2^2、-2^2、...、+k^2、-k^2\) 的位置
平均查找长度 :
成功平均查找长度 :
ans = (表中每个元素在插入时再散列的次数+元素个数)/元素个数
tips:没有再散列就是1
不成功平均查找长度 :
ans = 表中每个位置再散列查找到第一个空位的次数/表长
tips:表长是指0~MOD-1,因为有的题哈希数组可能会比MOD开得大,导致有的数再散列会超过MOD。
E.g :
7、设哈希函数H(K)=3 K mod 11,哈希地址空间为0~10,对关键字序列(32,13,49,24,38,21,4,12),按线性探测法解决冲突的方法构造哈希表,求出等概率下查找失败时的平均查找长度()。
A. 11/11 B. 29/11
C. 35/11 D. 40/11
D
排序相关
排序的稳定性 :
定义:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,则称这种排序算法是稳定的;否则称为不稳定的。
不稳定的排序算法 : 堆排序、快速排序、希尔排序、直接选择排序;
稳定的排序算法:基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序。
时间复杂度 :
PS : 建堆的复杂度为 O(n)
原地排序 :
原地排序是指:基本上不需要额外辅助的的空间,允许少量额外的辅助变量进行的排序。
属于原地排序的是:希尔排序、冒泡排序、插入排序、选择排序、堆排序、快速排序。
逻辑运算符 :
符号意义
"∨" 表示"或"、" | "
"∧" 表示"与"、" & "
"┐" 表示"非"、" ! "
"=" 表示"等价".
"->" 表示"包含于" :
A -> B 为真当且仅当 :
A = 0, B = 0 或 1
A = 1, B = 1
优先级
和c++差不多...
![](/qrcode.jpg)
补码反码
正数不谈...
负数反码为原码除符号位外取反
负数补码为反码再加1
补码运用 :
正数加上负数的补码相当于减去这个数
取值范围负数总是大 1
因为0的补码只有一种表示 : 00000000
所以 10000000 被用来表示 10000000 即-128的补码
而正数的符号位不能为1 所以少 1
十进制数3 ^ (-2)的位运算结果为()。
A、-3(十) B、1(十) C、1/9(十) D、-2(十)
A
000000011 ---> 补码 000000011
100000010 ---> 补码 111111110
异或得到 : 111111101
100000011 <--- 转换为原码(先 -1 后取反 )
欧拉回路和汉密尔顿回路
设完全图 G有n个结点,m条边,则当( )时,G中存在欧拉回路。
A.m为奇数 B.m为偶数 C.n为奇数 D.n为偶数
欧拉回路 : 对于边而言,所有边经过一次
汉密尔顿回路 : 对于点而言,所有点经过一次
可以举个小例子
哈夫曼树
有n个叶子的哈夫曼树的结点总数为( )
A.不确定 B.2n C.2n+1 D.2n-1
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
- 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
- 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
- 从森林中删除选取的两棵树,并将新树加入森林
- 重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。
哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
E.g :
现有一段文言文,要通过二进制哈夫曼编码进行压缩。简单起见,假设这段文言文只由4个汉字“之”、“乎”、“者”、“也”组成,它们出现的次数分别为700、600、300、400。那么,“也”字的编码长度可能是( )。
A.1或2 B.2或3 C.3或4 D.1或3
B
AOV/AOE网
下列有关图的说法正确的是()。
A.用边表示活动的网络(AOE网)的关键路径是指从源点到终点的路径长度最长的路径。
B.对于AOE网络,加速任一关键活动就能使整个工程提前完成。
C.对于AOE网络,任一关键活动延迟将导致整个工程延迟完成。
D.在AOE网络中,可能同时存在几条关键路径,称所有关键路径都需通过的有向边为桥。
AOE网 :
在带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示完成这项活动所需要的时间,则此带权有向图称为边活动网(activity on edge network),简称AOE网。
顶点表示某项活动的开始,顶点1称为源点(或起点),表示整个工程开始,顶点2称为汇点(或终点),表示整个工程的结束。AOE网可用来估算工程的最短工期(完成整个工程至少需要多少时间)以及哪些活动是影响工程进展的关键。
概念 :
- 路径长度:路径上各活动持续时间的总和(即路径上所有权之和)。
完成工程的最短时间:从工程开始点(源点)到完成点(汇点)的最长路径称为完成工程的最短时间。
关键路径:路径长度最长的路径称为关键路径。关键路径上的活动为关键活动
性质 :
- 只有在某顶点所代表的事件发生后,从该顶点出发的各有向边所代表的活动才能开始。
- 只有在进入某点的各有向边所代表的活动都已结束,该顶点所代表的时事件才能发生。
AOV网 :
AOV网(Activity On Vertex NetWork)用顶点表示活动,边表示活动(顶点)发生的先后关系。AOV网的边不设权值,若存在边<a,b>则表示活动a必须发生在活动b之前。
若网中所有活动均可以排出先后顺序(任两个活动之间均确定先后顺序),则称网是拓扑有序的,这个顺序称为网上一个全序。
进制转换
对于不同数制之间关系的描述,正确的是()。
A.任意的二进制有限小数,必定也是十进制有限小数。
B.任意的八进制有限小数,未必也是二进制有限小数。
C.任意的十六进制有限小数,不一定是十进制有限小数。
D.任意的十进制有限小数,未必也是八进制有限小数。
A D
小数进制转换方法为乘进制数取个位
如将 0.1转换为八进制
0.1 * 8 = 0.8 ---> 0
0.8 * 8 = 6.4 ---> 6
0.4 * 8 = 3.2 ---> 3
0.2 * 8 = 1.6 ---> 1
0.6 * 8 = 4.8 ---> 4
0.8 * 8 = 6.4 ---> 6
所以 0.1 转换为 0.063146314...
一些基础知识 :
下列关于高级语言的说法正确的是()。
A、Fortran是历史上的第一个面向科学计算的高级语言
B、Pascal和C都是编译执行的高级语言
C、BASIC是历史上的第一个支持面向对象的语言
D、编译器将高级语言程序转变为目标代码
ABD
在下列几种存储器中,访问速度最快的是
A.硬盘 B.cache C.RAM D.寄存器
D
RAM、ROM、Cache都属于内存
CPU可以直接访问内存
cache是一个高速小容量的临时存储器,存储CPU最经常访问的指令或者操作数据。
而寄存器不同,寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。
寄存器>Cache>RAM>ROM>硬盘>软盘
以下关于编程语言的选项中,正确的是( )
A.操作系统控制和管理软硬件资源,需要直接操作机器,所以需要用机器语言编写
B.同样一段高级语言程序通过不同的编译器可能产生不同的可执行程序
C.C++是一种纯面向对象语言
D.解释执行的语言只能选择一个解释器。
B
c++是混合型面向对象
计算机能直接执行的指令包括两部分,它们是( )
A.源操作数与目标操作数 B. 操作码与操作数
C.ASCII码与汉字代码 D. 数字与字符
B
字长 :在CPU中能够作为一个整数加以处理的二进制数据
冯诺依曼计算机模型 :
可以简要地概括为以下三点:
①计算机应包括运算器、存储器、控制器、输入和输出设备五大基本部件。
②计算机内部应采用二进制来表示指令和数据。
③将编好的程序送入内存储器中能自动逐条取出指令和执行指令。
在微机系统中,最基本的输入输出模块BIOS存放在()中。
A、RAM B、ROM C、硬盘 D、寄存器
B
编译程序和解释程序是两类高级语言翻译程序,它们的根本区别在于()。
A、是否进行优化处理 B、执行效率不同
C、对源程序中的错误处理不同 D、是否形成目标程序
[要点解析] 语言翻译程序是一种系统软件,高级语言翻译程序主要有编译程序和解释程序两类。编译程序是先将源程序翻译成目标程序再执行,而解释程序翻译(解释)一条,执行一条。可此两者的根本区别在于是否形成目标程序
技巧题目mark
- 将数组{8, 23, 4, 16, 77, -5, 53, 100}中的元素按从大到小的顺序排列,每次可以交换任意两个元素,最少需要交换( )次。
A. 4 B. 5 C. 6 D. 7 E. 8
最优的方法是:对每个元素,将它与排序后对应的位置的元素交换,这样的交换次数最少。 - 对n个记录的文件进行基数排序,所需要的辅助存储空间大致为()
A. O(1) B. O(n) C. O(log2n) D. O(n2) - 若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则它的后序序列必是___________。
A.F E G H D B C B. E F G H D B C
C.F E H G D C B D. F E G H D C B