6. 温故知新Chapter1 测试一下第6页数据结构在计算机内存中的表示是 ( )
A. 数据的存储结构 B. 数据结构
C. 数据的逻辑结构 D. 数据元素之间的关系
为规模n的问题设计了一个算法,其中最频繁操作的执行次数是n的函数: f(n)=3n3+100n2+9n+10000,则该算法的时间复杂度是多少。
22. 温故知新Chapter5 测试一下第22页下列编码中属前缀码的是( )
(A){1,01,000,001} (B){1,01,011,010}
(C){0,10,110,11} (D){0,1,00,11}
一棵深度为6的满二叉树有___________个分支结点和___________个叶子结点。
设一棵完全二叉树有700个结点,则共有__________个叶子结点。
某二叉树结点的中序序列为ABCDEFG,后序序列为BDCAFGE,则其左子树中结点数目为( )
A. 3 B. 2 C. 4 D. 5
26. 温故知新Chapter6 测试一下第26页设散列表容量为8(散列地址空间0..7),给定字典的关键字序列(30,36,47,52,34,40),散列函数H(k) = k mod 7,分别采用线性探查法和拉链法解决冲突,要求:
(1)构造散列表;
(2)等概率情况下查找成功时的平均查找长度ASL。
有序表为{16,40,82,105,132,246,285,362,375,390,882,995,1008},当二分查找值为82和395的结点时,查找的次数分别是多少?
35. 温故知新第35页P285 算法题5
试设计一个算法,在尽可能少的时间内重排数组,将所有取负值的排序码放在所有取非负值的排序码之前。考核点:快速排序的实现算法
int dividByFirstElement(int a[], int i, int j)
{
int temp=a[i];
while(i<j)
{
while((i<j)&&(a[j]>temp)) j- -;
if(i<j) a[i++]=a[j];
while((i<j)&&(a[i]<=temp)) i++;
if(i<j) a[j--]=a[i];
}
a[i]=temp;
return i;
}void quickSort(int a[], int i, int j)
{
int m=dividByFirstElement(a, i, j);
if(i<m-1)
quickSort(a, i, m-1);
if(m+1<j)
quickSort(a, m+1, j);
}
Chapter 8 测试一下
36. 温故知新第36页P285 算法题5
//key为指定的分割点(即选取的基准关键字)
void splitByZero(int a[], int i, int j, int key)
{
while(i<j)
{
while((i<j)&&(a[j]>key)) j--;
while((i<j)&&(a[i]<=key)) i++;
if(i<j)
{ int temp=a[i]; a[i]=a[j]; a[j]=temp; i++; j--; }
}
}Chapter 8 测试一下
45. 温故知新测试与训练第45页设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列( )方法可以达到此目的。
A. 快速排序 B. 堆排序 C. 归并排序 .D 插入排序
有8个结点的无向图最多有( )边。
14 B. 28 C. 56 D. 112
设栈S和队列Q的初始状态为空,元素a,b,c,d ,e,f依次进栈,一个元素出栈后即进入队列Q。如果6个元素出队列的顺序是b,d,c,f,e,a,则栈S的容量至少应该是 。
现有存储n个元素的一维数组,则
(1)读取数组中第i个元素的平均时间复杂度是多少;
(2)查找数组中元素x的平均时间复杂度是多少。