1.在下面的程序段中,计算过程的时间复杂度是( )。
for(i=1;i<n;i++)
for(j=i;j>0;j–)
a++;
//1+2+3+…n.=(n²+n)/2
答案:O(n²)
*2.对具有n个结点的顺序表中指定内容的结点进行查询定位操作,其算法时间复杂度为O()
答案:O(n)
3.两个指针P和Q,分别指向单链表的两个元素,P所指元素是Q所指元素前驱的条件是
答案:p->next==Q;
4.顺序表求表长的时间复杂度为( )
//所含数据元素的个数
答案:O(1)
5.单链表求表长的时间复杂度为( )
//while(p!=NULL)
{
P=P->next;
j++;
}
答案:O(n)
6.设栈s 和队列q的初始状态都为空,元素a,b,c,d,e,f依次进入栈s,元素出栈后即进入队列q,若6个元素出队的序列是bedcaf,则栈s的容量至少应能容纳( )个元素 。
答案:4
7.void test1(BitreeNode * T){
if (T) {
count ++;
test1(T->lchild);
test1(T->rchild);
}
}
该算法的功能是( )
答案:统计树内所有节点数量
8.二叉树的4种遍历方法中,若采用其中2种遍历序列恢复二叉树,( )遍历序列是必不可少的。
//只知前序和后序,无法知道具体左右子树元素
答案:中序遍历
9.二叉树遍历的时间复杂度为( )
//前序,中序,后序,层次遍历(递归)
答案:O(n)
10.设结点的权集W ={3,10,6,2,7},为其构造相应的哈夫曼树,则其带权路径长度为( )
答案:61
11.无向图G=(V,E),其中V={A,B,C,D,E,F},E={(A,C),(B,C),(A,D),(A,F),(C,F),(D,E),(F,E)},按头插法为其建立邻接表,以A为起点,采用广度优先搜索依次访问的结点序列为( )
//头插法是用栈,故边是先进后出
答案:AFDCEB
12.无向图G=(V,E),其中V={A,B,C,D,E,F},E={(A,C),(B,C),(A,D),(A,F),(C,F),(D,E),(F,E)},按边信息构造邻接矩阵后,以A为起点,
采用广度优先搜索依次访问的结点序列为( )
答案:ACDFBE
13.无向图G=(V,E),其中V={A,B,C,D,E,F},E={(A,C),(B,C),(A,D),(A,F),(C,F),(D,E),(F,E)},按边信息构造邻接矩阵后,以A为起点,
采用深度优先搜索依次访问的结点序列为( )
答案:ACBFED
14.将无序关键字序列{13,6,19,5,9,27,18}构造为二叉排序树,在该树中查找关键字5需要经过( )次查询操作.
//一大一小
//if(k==bt->key)return bt;
//else if(k<bt-key)return search(bt->lchild,k);
//else return search(bt->rchild,k);
答案:3
15.堆排序在最好或最坏的情况下,时间复杂度都为
/for(i=L->length/2;i>0;i–)
heapadjust(L,i,L->length);
for(i=L->length;i>1;i–)
{
swap(L,1,i);
heapdajust(L,1,i-1);
}
temp=L->r[j];
for(j=2s;j<=m;j*=2)
{
if(j<m&&L->r[j]>L->r[j+1])
++j;
if(temp>L->r[j])break;
L->r[s]=L->r[j];
s=j;
}
L->r[s]=temp;*/
答案:O(n㏒₂n)
16
5,15
17.已知关键字序列{12,8,4,9,2,13},哈希表装填因子为0.75,若采用除p留余法构表和线性探测法处理冲突,则表长为( ),p值应选为( ),查找成功的平均查找长度为( )。注:计算结果保留小数点后两位。
//装填因子=元素个数/表长
//通常p为小于或等于表长的最小质数或不包含小于20质因子的合数
答案:8,7,1.17(7/6)
18.请对以下快速排序算法进行填空:通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以分别对这两部分记
录继续进行排序,以达到整个序列有序。
void QuickSort(LineList r[],int first,int end)
{
int i,j;
LineList temp;
i=first; j=end;___ ;
while(i<j)
{
while (i<j && r[j].Key>=temp.Key)
j–;
r[i]=r[j];
while (i<j && r[i].Key<=temp.Key)
____;
r[j]=r[i];
}
r[i]=temp;
if (first< __) QuickSort(r,first,i-1);
if (i+1<end) QuickSort(r,i+1,end);
}
答案:
1.temp=r[i]
2.i++
3.i-1
19.已知无序关键字序列{12,8,4,9,11,14,7},若采用快速排序算法进行升序排序,第一趟排序结果为
,___,___,___,___,___,___,第二趟排序结果为,___,___,___,___,___,___
答案:7,8,4,9,11,12,14
4,7,8,9,11,12,14