青岛大学计算机910数据结构常考题型
作为一个2020考研上岸的学子,这里给考青岛大学计算机系的同学们准备了一些历年常考题型及解析,供大家学习。
1. 如果只想得到一个序列的第k个最小元素之前的部分排序序列,最好采用什么方法?为什么?
最好采用堆排序。首先堆排序的时间复杂度是O(n+k*log n)k<=n,时间复杂度小。其次,每次调整堆时都能选择一个最小的元素。
2. 堆排序和二叉排序树的区别?
堆排序是一种排序算法,而二叉排序树用于查找。
堆排序的父亲节点要比左右孩子节点大或者小,但左右孩子无大小之分,而二叉排序树左孩子要小于父亲节点,右孩子要大于父亲节点。
3. {57,40,38,11,13,34,48,75,25,6,19,9,7}这样一个序列得到前四个最小元素序列{6,7,9,11},比较了多少次?
建堆过程:比较了20次,输出6。
第一次调整:比较了5次,输出7。
第二次调整:比较了4次,输出9。
第三次调整:比较了5次,输出11。
所以,一共比较了34次。
4. 求“2(3+4)-1”的后缀表达式?*
234+*1-
5. 一个二维数组A[10][20]按行存放于一个连续的存储空间中,A[0][0]的存储地址是200,每个数组元素占一个存储字节,求A[6][2]的地址?
首先这个二维数组是10行20列,列编号是从0-19,有的同学以为是0-20,其实不是,A[10][20]这里的20是表示有20列。所以答案应该是:200+(20*6+2)=322。
6. 广义表的表头和表尾怎么看?
广义表:在我的理解就是列表的嵌套,列表中还可以有列表。
表头:广义表第一个元素。
表尾:除去表头剩下的所有元素组成的广义表。
例如(a,b,(c,d))
表头a;