计算机?
1944年,美籍匈牙利数学家 冯 诺依曼 提出计算机基本结构和工作方式的设想 为计算机的诞生和发展提供了理论基础
微型机主要技术指标:
- 字长:一直计算机能够直接处理的二进制数据的基础位数 单位为位(BIT)
- 主频:计算机主时钟在一秒内发出的脉冲数 很大程度上决定了计算机的运算速度
- 内存容量:表示计算机处理信息能力强弱的一项技术指标 单位为字节(BYTE
- 外存容量:一般指软盘、硬盘、光盘
计算机的特点:运算速度快 运算精度高 有记忆能力 逻辑判断能力 自动控制能力
计算机硬件由五大部分组成:运算器、控制器、存储器、输入设备、输出设备
中央处理器(CPU):由运算器、控制器和一些寄存器组成
运算器进行各种算术运算和逻辑运算;控制器是计算机的指挥系统 CPU的主要性能指标是主频和字长
存储器:
内部存储器:中央处理器能直接访问的存储器称为内部存储器,包括快速缓冲存储器和主存储器;中央处理器不能直接访问的存储器称为外部存储器,外部存储器中的信息必须调入内存后才能为中央处理器处理。
主存储器:内存也常泛称主存,但严格上说,只有当内存中只有主存,而没有快速缓冲存储器时,才能称为主存。主存储器按读写功能,可分只读存储器(ROM)和随机存储器(RAM)两种。
外部存储器:
外存储器:也称辅助存储器,一般容量较大,速度比主存较慢
硬盘(Hard disk):将盘片、读写磁头及驱动装置精密地组装在一个密封盒里;采用接触式起停,非接触式读写的方式(磁盘不工作时,磁头停在磁盘表面的起停区,一旦加电后,磁头随着盘片旋转的气流“飞”起来,悬浮在磁盘表面,进行读写)
软盘(Floppy Disk):目前常见的是3.5英寸/1.44 MB的软盘
光盘存储器(CD-ROM):普通的CD-ROM,只能读,不能写; CD盘片的存储量大约是650 MB
输入设备
键盘、鼠标(Mouse,主要机械型和光电型)、手写笔、触摸屏、麦克风、扫描仪、视频输入设备、条形码扫描器
输出设备
显示器(Monitor):目前主要有CRT(阴极射线管)显示器和LCD液晶显示器;打印机:主要有针式打印机、喷墨打印机、激光打印机;绘图仪 音箱
微型计算机的问世是由于(超)大规模集成电路的出现
中央处理器(CPU)能访问的最大存储器容量取决于地址总线
微型计算机中,寄存器的存取速度最快
若我们说一个微机的CPU是用的PII300,此处的300确切指的是CPU的主时钟频率
计算机系统总线上传送的信号有数据信号、控制信号与地址信号
图论基础相关
特殊的树
- 链(chain/path graph) :满足与任一结点相连的边不超过2条的树称为链。
- 菊花/星星(star) :满足存在\(u\)使得所有除\(u\)以外结点均与\(u\)相连的树称为菊花。
- 有根二叉树(rooted binary tree) :每个结点最多只有两个儿子(子结点)的有根树称为二叉树。常常对两个子结点的顺序加以区分,分别称之为左子结点和右子结点。
大多数情况下, 二叉树 一词均指有根二叉树。

- 完整二叉树(full/proper binary tree) :每个结点的子结点数量均为 0 或者 2 的二叉树。换言之,每个结点或者是树叶,或者左右子树均非空。
- 完全二叉树(complete binary tree) :只有最下面两层结点的度数可以小于 2,且最下面一层的结点都集中在该层最左边的连续位置上。
- 完美二叉树(perfect binary tree) :所有叶结点的深度均相同的二叉树称为完美二叉树。
排序
稳定性:是指相等的元素经过排序之后相对顺序是否发生了改变。
基数排序、计数排序、插入排序、冒泡排序、归并排序是稳定排序。
选择排序、堆排序、快速排序不是稳定排序。
复杂度相关?
\(O(n^2)\):选择排序,插入排序,冒泡排序
\(O(n\ log\ n)\):堆排序,归并排序,快速排序
前两类是基于比较的排序算法 基于比较的排序算法的时间复杂度下界是\(O(n\log\ n)\)
计数排序、基数排序、桶排序不仅与\(n\)有关,还与数值的大小范围\(m\)有关
选择排序:每次找出第\(i\)小的元素(即\(A_{i...n}\)中最小的元素) 将这个元素与数组第\(i\)个位置上的元素交换
冒泡排序:冒泡排序是一种稳定的排序方法。
以升序为例,冒泡排序每次检查相邻两个元素,如果前面的元素大于后面的元素,就将相邻两个元素交换。当没有相邻的元素需要交换时,排序就完成了。
经过第\(i\)次排序后,数列末尾的\(i\)项必然是最大的第\(i\)项
插入排序: 插入排序将数列划分为“已排序的”和“未排序的”两部分,每次从“未排序的”元素中选择一个插入到“已排序的”元素中的正确位置
计数排序:计数排序是一种复杂度为\(O(n+w)\)的稳定排序,其中\(w\)代表待排序数据的值域大小。
计数排序分为三个步骤:
1. 计算每个数出现了几次。
2. 求出每个数出现次数的前缀和。
3. 利用出现次数的前缀和,从右至左计算每个数的排名。
计数排序: 基数排序是将待排序的元素拆分为\(k\)个关键字(比较两个元素时,先比较第一关键字,如果相同再比较第二关键字……),然后先对第\(k\)关键字进行稳定排序,再对第\(k-1\)键字进行稳定排序……最后对第一关键字进行稳定排序,这样就完成了对整个待排序序列的稳定排序。
一般来说,每个关键字的值域都不大,就可以使用计数排序作为内层排序,复杂度为\(O(nk+\sum^k_{i=1}w_i)\),其中\(w_i\)为第\(i\)键字的值域大小
快速排序:是 分治地来将一个数组排序
快速排序分为三个过程:
1. 将数列划分为两部分(不是直接分,要求保证相对大小关系)
2. 递归到两个子序列中分别进行快速排序
3. 不用合并,因为此时数列已经完全有序
归并排序:归并排序是一种采用了 分治 思想的排序算法,其本质是一种 CDQ 分治 。
归并排序分为三个过程:
1. 将数列划分为两部分(在均匀划分时时间复杂度为\(O(n\ log\ n)\));
2. 递归地分别对两个子序列进行归并排序;
3. 合并两个子序列。
堆排序:对所有记录建堆 。依次取出堆顶元素,就可以得到排好序的序列。时间复杂度为\(O(n\ log\ n)\)。
桶排序: 桶排序适用于待排序数据值域较大但分布比较均匀的情况,是一个期望时间复杂度为\(O(n)\)的排序算法。
希尔排序:Shell 排序是以它的发明者命名的,也称为缩小增量排序法。Shell 排序对不相邻的记录进行比较和移动:
1.将待排序序列分为若干子序列(每个子序列的元素在原始数组中间距相同)
2.对这些子序列进行插入排序
3.减小每个子序列中元素之间的间距,重复上述过程直至间距减少为 1
Shell 排序的复杂度和间距序列的选取(就是间距如何减小到 1)有关,比如“间距每次除以 3”的 Shell 排序的复杂度是\(O(n^{3/2}))\)。
错题
在数据压缩编码的应用中,哈夫曼(Huffman)算法是一种采用了( )思想的算法。
A. 贪心 B. 分治 C. 递推 D. 回溯
正确:A.贪心 误:B如果根的高度为 1,具有 61 个结点的完全二叉树的高度为( )。
A. 5 B. 6 C. 7 D. 8
正确:B.6 误:A.5
见树基础以下属于操作系统的有( )。
A. Windows XP B. UNIX C. Linux D. Mac OS
正确:A,B,C,D 误:A,C,D以比较作为基本运算,在 N 个数中找最小数的最少运算次数为( )。
A. N B. N-1 C. N^2 D. log N 正确:B 错误:D
如果根的高度为 1,具有 61 个结点的完全二叉树的高度为( )。
A. 5 B. 6 C.7 D. 8
正确: B 误:A
G 是一个非连通简单无向图,共有 28 条边,则该图至少有( )个顶点。
A. 10 B. 9 C.8 D. 7
\((8-1)*8/2=28\)
.某计算机的 CPU 和内存之间的地址总线宽度是 32 位(bit),这台计算机最多可以使用( )的内存。
A. 2GB B. 4GB C.8GB D. 16GB
正确: B 误:D
可以将单个计算机接入到计算机网络中的网络接入通讯设备有( )。
A. 网卡 B. 光驱 C.鼠标 D. 显卡
正确: A 误:A,B
下列算法中运用分治思想的有( )。
A. 快速排序 B. 归并排序 C.冒泡排序 D. 计数排序
正确:A,B 误:B
\(O(n^2)\):选择排序,插入排序,冒泡排序
\(O(n\ log\ n)\):堆排序,归并排序,快速排序
前两类是基于比较的排序算法 基于比较的排序算法的时间复杂度下界是\(O(n\log\ n)\)
计数排序、基数排序、桶排序不仅与\(n\)有关,还与数值的大小范围\(m\)有关