算法基础知识【3】(8-11)

Date: 2019-08-11

1.  算法的空间复杂度是指()。算法空间复杂度指的是算法 执行过程中需要占用多少内存空间资源

回顾:算法的时间复杂度

2.  在索引顺序表中,实现分块查找,在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,而且与每块中元素个数有关。() 正确

解释:在分块查找过程中,先对块间进行顺序查找,然后对每个块内进行查找(有时采用二分查找)

3.  下列排序算法中,已基本有序却反而变得更复杂的排序算法是:( )。 快速排序算法

快排算法实质上是分治算法的应用:

  1. 快排采用分治的思想,第一次循环结束时,它实际上会产生一个轴,轴左边的都小于轴值,右边的都大于轴值,这样通过轴就分成了两个子序列,再对两个子序列递归快排,最终得到排好序的序列。
  2. 快排对越混乱的数据,排序效果越好,现在说一下为什么对一个基本有序的却更复杂,那是因为这样会导致每次轴划分出的两个子序列,一个趋近于1的数量级,一个趋近于n数量级,那么递归快排就近似总是对n做排序,时间复杂度O(n²),而且非常不符合快排的思想。比较好的情况是每次递归大致平分成两个n/2数量级的子序列,时间复杂度O(nlogn)

4.  需要借助于一个队列来实现DFS算法()   错误

解释:

DFS是图的深度优先遍历算法。

例如,图中A节点与B,C节点相连,B节点与D节点相连。从图的顶底A开始,依次访问B,D,C就是图的深度优先遍历。在访问节点D的时候需要保持B的兄弟节点C,需要用到栈;   

即:DFS 深度优先遍历,是先进后出的思想,需要用到栈这一种数据结构! 例如:回溯法便是典型的DFS算法,成为扩展节点的节点可以再次成为活节点。

同理:BFS广度优先遍历,是先进先出的思想,需要用到队列这一中数据结构! 例如:分支界限法便是典型的BFS算法,成为扩展节点的节点不可以再次成为活节点了。

5.  下面的哪个序列可能是二叉搜索树中序遍历的结果?  B

73 8 2 9 4 11
2 3 4 7 8 9 11
11 2 9 3 8 4 7

解释:因为二叉搜索树(Binary Search Tree)满足:针对所有的节点,若有孩子节点,都有:左孩子的值要小于该节点,而右孩子的值都要大于该节点。如果进行中序遍历(左中右),则返回的结果就是一个非递减的序列

6.  在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是()  比较:基数+选择

7.  假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为多少次?   (n*(n-1)/2)~O(n^2)

8.  在图采用邻接表存储时,求最小生成树的Prim算法的时间复杂度为()  O(n+e)

9.  利用如下递归算法进行x(x(8))的计算时,需要进行多少次的调用x(n)?    18次

int x(int n)
{
 if(n<=3)
     return 1;
 else
     return x(n-2)+x(n-4)+1;
}

解释: 

x(8)=x(6)+x(4)+1  递归计算x(8)第一次调用

x(6)=x(4)+x(2)+1  递归计算x(6)第二次调用

x(4)= x(2)+x(0)+1  递归计算x(4)第三次调用

x(4)= x(2)+x(0)+1   递归计算x(4)第四次调用

之后再调用x()计算黑体部分的结果(5次,加上前面4次,一共9次),最后x(8)返回值为9

 

接着计算x(9)

x(9)=x(7)+x(5)+1  递归计算x(9)第一次调用

x(7)=x(5)+x(3)+1  递归计算x(7)第二次调用

x(5)=x(3)+x(1)+1  递归计算x(5)第三次调用

x(5)=x(3)+x(1)+1  递归计算x(5)第四次调用

之后再调用x()计算黑体部分的结果(5次,加上前面4次,一共9次),最后x(8)返回值为9

 

所以总共调用x()的次数是9+9=18

10.  如果把传输速率定义为单位时间内传送的信息量(以字节计算)多少。关于一下几种典型的数据传输速率:
1.使用USB2.0闪存盘,往USB闪存盘上拷贝文件的数据传输速率
2.使用100M以太网,在局域网内拷贝大文件时网络上的数据传输速率
3.使用一辆卡车拉1000块单块1TB装满数据的硬盘,以100km/h的速度从上海到天津(100km)一趟所等价的数据传输带宽
4.使用电脑播放MP3,电脑的PCI总线到声卡的数据传输速率
在通常情况下,关于这几个传输速率的排序正确的是()      4<1<2<3  【记住吧】

补充常识:

普通U盘写数据的6MB/s,即48Mbps;

100M以太网的速率就是100Mbps;

卡车拉硬盘,1000x1000x8/3600=2222Mbps,这个应该是最快的;

MP3在256kbps码率下也平均只有1分钟2MB,所以不会超过0.3Mbps。

part two:

1.  下面程序段的时间复杂度: O(n^2)

k=1; 
for(i=0;i<n;i++) 
for(j=0;j<n;j++) 
A[i][j]=k++;

2.   排序算法中的比较次数与初始元素序列的排列无关()     错误,,这样的说法太笼统了。选择+基数的比较次数确实与初始序列无关;但是其他排序算法是有关的,尤其是快排 【目前公认的快排是针对混乱序列进行排序的最快排序算法】

3.  对线性表进行折半查找时,要求线性表必须以链式方式存储,且结点按关键字有序排列,这样的说法正确吗?  错误

解释:对线性表进行折半查找,也称作二分查找,需要用到索引,所以需要是顺序存储的线性表,又因为二分法,所以有序。

牛客上的他人的解释:【注意:顺序存储不一定是有序存储】

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

 

为什么采取顺序存储结构:折半查找需要先对查找的数据集合排序,并且每次要获得数据列表的中间位置,通过数组这种顺序存储结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值