NewCoder(牛客)题集--SIX

解:对

解析:内存的操作速度远高于外设,内存与外设交换数据是瓶颈

A.a7和a16

B.a11和a13

C.a1和a14

D.a3和a12

解:D

解析:

第一次:比较:(0+16)/2 = 8,比较a8

第二次:比较: (0+7) / 2 = 3 或者  (9+16) //2=12

解:错

解析: 二分查找针对的有序

A.直接选择排序

B.直接插入排序

C.快速排序

D.起泡排序

解:C

解析:

快速排序将数据按照基准数据分为左右两部分,左边都比基准数据小,右边都比基准数据大,按照中间位置,递归左右两侧,直到只有一个数据时,排序完成。

A.仅Ⅰ

B.仅Ⅱ

C.仅Ⅰ、Ⅱ

D.仅Ⅱ、Ⅲ

解:D

解析:

Hash表的查找效率取决于散列函数、处理冲突的方法和装填因子。显然,冲突的产生概率与装填因子(表中记录数与表长之比)的大小成正比,即装填得越满越容易发生冲突,Ⅰ错误。Ⅱ显然正确。采用合适的处理冲突的方式避免产生聚集现象,也将提高查找效率,例如用拉链法解决冲突时就不存在聚集现象,用线性探测法解决冲突时易引起聚集现象,Ⅲ正确。

A.'\007'

B.'\b'

C.'a'

D."\09"

解:D

解析:

字符常量是用单引号括起来的一个字符。例如:'a'、'='、'+'等。转义字符是一种特殊的字符常量。转义字符以反斜线"\"开头,后跟一个或几个字符。D选项中'\09',\0表示后面的字符是八进制数。又出现9所以是非法的,故D选项正确。

解:错误

解析:

在二叉排序树中,最小元素所在结点一定是中序遍历序列中第一个被访问的结点,即是二叉树的最左下结点,但可能有右子树。最大元素所在结点一定是中序遍历序列中最后一个被访问的结点,即是二叉树的最右下结点,但可能有左子树。

1

  \

   3

  /   \

 2    4

这样最小值1就是根节点

 解:错

解析:子串定义:串中任意个连续的 字符 组成的子序列

解:对

解析:

归并排序是将两个长度想当序列合并成一个序列,初始序列长度为m,那么合并之后的平均长度为2m

A.直接插入排序     

B.起泡排序

C.基数排序

D.快速排序

解:C

解析:基数排序的元素移动次数与关键字的初始排列次序无关,而其他三种排序都是与关键字的初始排列明显相关的。

A.35/12

B.37/12

C.39/12

D.43/12

解:B

解析:

题目已知元素序号(即下标)范围为1~12。查找1次成功的结点为:6。查找2次成功的结点为:3,9。查找3次成功的结点为:1,4,7,11。查找4次成功的结点为:2,5,8,10,12。成功查找所有结点的总的比较次数为:1×1+2×2+3×4+4×5=37平均比较次数为37/12。因此选择B。

A.2  B.3   C.5   D.0

解:D

解析:二维数组各元素在内存当中是连续存放的,将所有元素写在一个花括号内,会按照数组元素在内存当中的排列顺序对各元素赋初值。a[0][0],a[0][1],a[0][2],a[1][0],a[1][1]分别被赋值为1,2,3,4,5,而a[1][2]没有被赋值,当进行了初始化这个动作,没有在初始化列表中初始化的元素统一赋值为0!

A.[n/2]

B.[n/2]-1

C.1

D.[n/2]+2

解:D

解析:小根堆中最大的数一定是放在叶子节点上,堆本身是个完全二叉树,完全二叉树的叶子节点的位置大于[n/2]

A.2                B.3                  C.4                 D.6

解:C

解析:

第1次

1461018354253677178849299    

left=0,right=13,mind=6;   mid值为42,太大

第2次

146101835,42,53,67,71,78,84,92,99    

left=0,right=5,mind=2;   mid值为6,太小

第3次

1,4,6,101835,42,53,67,71,78,84,92,99    

left=3,right=5,mind=4;   mid值为18,太小

第4次

1,4,6,10,18,35,42,53,67,71,78,84,92,99    

left=5,right=5,mind=5;   mid值为35,找到了

A.int a[3][];

B.float a(3,4)

C.double a[][4];

D.float a(3)(4);

解:C

A.Dijkstra算法用于求解图中两点间最短路径,其时间复杂度O(n^2)

B.Floyd-Warshall算法用于求解图中所有点对之间最短路径,其时间复杂度为O(n^3)

C.找出n个数字的中位数至少需要O(n*logn)的时间

D.基于比较的排序问题的时间复杂度下界是O(n*logn)

解:C

解析:利用顺序统计思路找出n个数字的中位数可以再O(n)时间内完成,所以C错误。

A.let b=a;

B.let b=a.slice();

C.let b=a.splice(0,0);

D.let b=a.concat();

解:D

解析:

A选项 b=[1,2,3]   b==a

B选项 b=[1,2,3]   b!=a

C选项 b=[]           b!=a

D选项 b=[1,2,3]   b!=a

A.0     B.1       C.2       D.3         E.4         F.5

解:C

解析:

按整数数组的最大堆定义,每次调整完后根结点的元素与最后个元素交换,继续下次调整,直到所有的结点调整完毕。

原数组为 7 6 3 5 4 1 2 满足最大堆定义,直接交换根节点元素

               2 6 3 5 4 1 7,交换完毕

               6 5 3 2 4 1 7,调整完毕

               1 5 3 2 4 6 7,交换完毕

               5 4 3 2 1 6 7,调整完毕

               1 4 3 2 5 6 7,交换完毕

               4 2 3 1 5 6 7,调整完毕

               1 2 3 4 5 6 7,交换完毕,此时虽然已有序,但仍需进行最大堆调整,因为最大堆算法时间复杂度为nlog2n,会进行继续搜索调整

               3 2 1 4 5 6 7,调整完毕,移动一次

               1 2 3 4 5 6 7,交换完毕,移动两次

               2 1 3 4 5 6 7,调整完毕

               1 2 3 4 5 6 7,交换完毕

A.2

B.3

C.4

D.5

解:C

解析:

直接插入排序(straight insertion sort)的做法是:

每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。


大概是:24直接放进去                                                                                     24
第一趟   15比24小放到24前面,比较1次                                                 15    24

第二趟   32比24大放24后面,比较1次                                                     15    24     32

第三趟   28比32小,比24大,比较2次                                                     15   24     28     32

第四趟,19比32小,比28小,比24小,比15大,比较4次                       15    19    24     28    32

A.i*(i-1)/2+j

B.j*(j-1)/2+i

C.i*(i+1)/2+j

D.j*(j+1)/2+i

解:B

解析:

矩阵下标从1,1开始;一维数组下标从1开始;

故对应关系为:

当i>=j时,k=i(i-1)/2+j;

当i<=j时,k=j(j-1)/2+i;

题干中有个条件(i<j),算是一个坑,所以选B不选A

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值