2017.05.11

来源:互联网 发布:json空值 编辑:程序博客网 时间:2024/06/15 15:04

1、数组:
A.原生类指未被实例化的类,数组一般指实例化,被分配空间的类,不属于原生类.
B.对象的特点是封装了一些数据,同时提供了一些属性和方法,从这个角度来讲,数组是对象
D.数组的大小确定之后不可改变

2、堆
已知一个序列,比如{100,6070,50,32,65},怎么判断是不是堆?
答案:把这个序列看成数组型的二叉树,如果根结点是i,左子树是2*i,右子树是2*i+1。
堆分为最大堆与最小堆。(只要父节点比子节点大或小就好了,子节点之间没什么要求和关系)
1)、最大堆中所有父节点都比左子树、右子树大,
2)、最小堆中所有父节点都比左子树、右子树小,

3、局部变量没有默认值
成员变量有初始值,而局部变量没有初始值得。本体中的s定义在方法中所以为局部变量-没有初始值。变量没有初始值就使用了,编译通不过

4、树、二叉树、森林的遍历
树有先根和后根遍历;森林有先序和中序遍历;二叉树则有先序、中序和后序遍历。
其中,
树的先根遍历,森林的先序遍历和二叉树的先序遍历相互对应。
树的后根遍历,森林的中序遍历和二叉树的中序遍历相互对应。

5、
length :返回当前长度
capacity:
如果字符串长度没有初始化长度大,capacity返回初始化的长度
如果append后的字符串长度超过初始化长度,capacity返回增长后的长度
PS:
StringBuffer和StringBuilder的默认大小为16
ArrayList和LinkedList的默认大小10

6、在一个有8个int数据的数组中,随机给出数组的数据,找出最大和第二大元素一定需要进行(9)次比较:
解1:
比如 A B C D E F G H,通过8进4的方式,A与B比较, C与D比较…..然后再4进2,A与C比较(假设A,C比B,D大),E与G比较。再2进1,比如A与E比较(假设A,E比C,G大)选出最大的A,总共7次。
然后次大的数一定是被最大数PK下去的,所以再选B C E三个比较2次得到次大的数
A
A E
A C E G (7次)
A B C D E F G H

再选 BCE中最大的(2次),共9次,不过可以这个方法比较次数是少一点,但是所需要的空间大,要记下与沿途的最大值比较的数。

解2:
分析:这是一个考最优算法的下界问题。
选择问题的复杂度下界,已经有证明,可参考算法导论或屈婉玲的算法设计与分析技术这本书。
对于选择问题,找最大问题的下界是:n-1
找第二大问题的下界是:n+logn-2

因此,本题,n=8,代入下界公式:8+3-2 = 9,所以选择B.

0 0