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位系统中&