广东清算中心笔试题

1、完全二叉树(Complete Binary Tree)的概念
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。
一棵二叉树至多只有最下面的两层上的结点的度数可以小于2,并且最下层上的结点都集中在该层最左边的若干位置上,则此二叉树成为完全二叉树。
 
2、排序算法,对一个个数很大的数组进行排序。如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
只需要用一个数组记录每个数字出现次数就可以了。
假定你的数字范围在0到65535范围之内,定义一个数组count[65536]这个空间是常量,和n无关,所以是O(1) 
那么对于每个这个数字,都做在count中记录一下
100 => count[100]++
200 => count[200]++
300 => count[300]++
119 => count[119]++
0 => count[0]++
6 => count[6]++
最后,遍历一边所有这些数字就可得到0~65535每个数字的个数(在count数组中),然后再顺序遍历count数组,count[n] = m,则输出m个n,(比如说有count[3] = 2, 那么说明有2个数字3),依次输出,最后可得结果。第一次遍历是O(n),第二次遍历是O(1)
为常量,所以最后的时间复杂度为O(n),而空间复杂度为O(1)
 
3、判断程序的安全性和错误
 

posted on 2015-03-20 21:13  楼兰过客  阅读(212)  评论(0编辑  收藏  举报

导航