1、 Java语言的下面几种数组复制方法效率:
System.arraycopy > clone > System.copyOf> for
2、 short a[100],sizeof(a)返回:200
short大小为2字节;
sizeof返回的值表示的含义(单位字节)
数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(存储该指针的地址长度,是长整形,应该为4)
类型——该类型所占空间的大小
函数——函数返回类型所占的空间大小。函数返回类型不能是void。
Java中数值范围:
byte 1个字节,应该字节有8位;
short 2个字节;
int 4个字节;
long 8个字节;
在64位操作系统中,short与 int 都是4字节。
3、 数组比链表速度更快的是:
1) 原地逆序;(数组可以头尾交换,相当于处理n/2个数据,而链表至少得完整遍历一遍)
2) 返回中间节点
3) 选择随机节点
4、 对长度为n的线性表进行顺序查找,在最坏情况下所需要比较次数为:n
分析:最坏的情况就是需要查找的数在最后一位或者不在该线性表中,那么比较次数为n-1或者n,取最坏情况就是n。
5、 最坏情况下,合并两个大小为n的已排序的数组所需要比较的次数为:2n-1
6、Char x[]=”abcdefg”;
(等价于Char x[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’\0’};)
Char y[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’};
分析:数组x的长度大于数组y的长度。字符串以’\0’结尾,多占一个空间。
6、 int a[10],哪些方法可以表示a[1]:
注意强制类型转换,char类型占一个字节,int占4个字节。
(1) &a[0]+1;数组首元素地址加1,根据指针运算就是a[1]地址。
(2) (int *)&a+1;数组地址被强制转换为int*,再加1,和(1)表达一个意思。
(3) (int *)((char *)&a+sizeof(int));数组地址先被转换为char *,然后加4,根据指针运算,向前移动4*sizeof(char),之后被转换为int *,即是a[1]地址。
7、 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的。
链式存储结构中每个节点都由数据域与指针域两部分组成,增加了存储空间。
8、 二维以上的数组是一种特殊意义的广义表;
数组一旦建立,结构的元素个数和元素间的关系不再变化;
数组采用顺序存储方式表示。