nowcoder习题

1、一个顺序表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(   )。

正确答案: B 

110
108
100
120

从100开始,第一个元素的存储地址是100,第二个是102,第三个是104,第五个是108,故选A

2、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是(  )。

正确答案: C   

O(n)
O(n^2)
O(logn)
O(nlogn)

二分查找又叫对数查找,因为其复杂度为(log2n),故选C

3、有字符序列(Q,H,C,Y,P,A,M,S,R,D,F,X),新序列(F,H,C,D,A,M,P,S,R,Y,Q,X)是下列( )排序算法一趟扫描结果。

正确答案: B   

堆排序
快速排序
希尔排序
冒泡排序

以M为支点的快速排序,从X开始比较,左边都是比M小的,右边都是比M大的,故选B

4、某地电信局要对业务号码进行梳理,需要检测开通的市话号码是否存在某一个是另一个的前缀的情况,以简化电话交换机的逻辑。例如:某用户号码是“11001100”,但与"110"报警电话产生前缀配对。已知市话号码最长8位,最短3位,并且所有3位的电话号码都以1开头。由于市话号码众多,长度也未必一直,高效的算法可以用O(n)的时间复杂度完成检测(n为开通市话号码个数,数量是千万级的)。那么,该算法最坏情况下需要耗费大约________内存空间。

正确答案: C   

5GB
500MB
50MB
5MB

最长8位  最短3位, 3位都是1开头
最短3位有10^2=100种,
四位:10^4=10000,五位:10^5=100000,六位:10^6=1000000,七位:10^7=10000000,八位:10^8=10000000
一位号码占4bit,比较前7位,相加 11110101*4*8/4/1024(Kb)/1024(Mb)=42MB  取(50Mb)

5、Which statement declares a variable a which is suitable for referring to an array of 50 string objects?(Java)

正确答案: B C F  

char a[][];
String a[];
String[] a;
Object a[50];
String a[50];
Object a[];

下面哪个语句声明了一个适合于创建50个字符串对象数组的变量?

A:char[][] 定义了二位字符数组。在Java中,使用字符串对char数组赋值,必须使用toCharArray()方法进行转换。所以A错误。

B、C:在Java中定义String数组,有两种定义方式:String a[]和String[] a。所以B、C正确。

D、E:数组是一个引用类型变量 ,因此使用它定义一个变量时,仅仅定义了一个变量 ,这个引用变量还未指向任何有效的内存 ,因此定义数组不能指定数组的长度。所以D、E错误。

F:Object类是所有类的父类。子类其实是一种特殊的父类,因此子类对象可以直接赋值给父类引用变量,无须强制转换,这也被称为向上转型。这体现了多态的思想。所以F正确。

6、定义语句"double * array [8]"的含义正确的是()。

正确答案: B 

array是一个指针,它指向一个数组,数组的元素时是双精度实型
array是一个数组,数组的每一个元素是指向双精度实型数据的指针
C语言中不允许这样的定义语句
以上都不对

指针数组( * strings[] ):可以说成是”指针的数组”,首先这个变量是一个数组,其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型,在32位系统中&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值