数据结构形考作业4 国家开放大学

您所在的位置:网站首页 关键字序列为堆 数据结构形考作业4 国家开放大学

数据结构形考作业4 国家开放大学

2023-08-20 23:34| 来源: 网络整理| 查看: 265

形考作业4

一、单项选择题(每小题2分,共40分)

1.对线性表进行二分查找时,要求线性表必须( )。

A.以顺序存储方式 B.以链接存储方式 C.以顺序存储方式,且数据元素有序 D.以链接存储方式,且数据元素有序

答案:C

2.采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为( )。

A.n B.n/2 C.(n+1)/2 D.(n-1)/2

答案:C

3.有一个长度为10的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为( )。

A.29/10 B.31/10 C.26/10 D.29/9

答案:A

4.已知一个有序表为{11,22,33,44,55,66,77,88,99},则顺序查找元素55需要比较( )次。

A.3 B.4 C.5 D.6

答案:C

5.有数据{53,30,37,12,45,24,96},从空二叉树开始逐个插入数据来形成二叉排序树,若希望高度最小,应该选择的序列是( )。

A.45,24,53,12,37,96,30 B.37,24,12,30,53,45,96 C.12,24,30,37,45,53,96 D.30,24,12,37,45,96,53

答案:B

6. 对于顺序存储的有序表{5,12,20,26,37,42,46,50,64},若采用折半查找,则查找元素26的比较次数是( )。

A.3 B.6 C.4 D.5

答案:C

7.在所有的排序方法中,关键字比较的次数与记录初始排列秩序无关的是( )。

A.冒泡排序 B.希尔排序 C.直接选择排序 D.直接插入排序

答案:C

8.从未排序序列中依次取出元素与已经排好序的序列中的元素作比较。将其放入已排序序列的正确的位置上,此方法称为( )。

A.插入排序 B.选择排序 C.交换排序 D.归并排序

答案:A

9.依次将每两个相邻的有序表合并成一个有序表的排序方法称为( )。

A.插入排序 B.交换排序 C.选择排序 D.归并排序

答案:D

10.当两个元素出现逆序的时候就交换位置,这种排序方法称为( )。

A.插入排序 B.交换排序 C.选择排序 D.归并排序

答案:B

11.每次把待排序的区间划分为左、右两个子区间,其中左区间中记录的关键字均小于等于基准记录的关键字,右区间中记录的关键字均大于等于基准记录的关键字,这种排序称为( )。

A.插入排序 B.快速排序 C.堆排序 D.归并排序

答案:B

12. 一组记录的关键字序列为(46,20,30,79,56,38,40,84,90,110),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为( )。

A.40,20,30,38,46,56,79,84,90,110 B.20,30,40,38,46,79,56,84,90,100 C.30,20,40,38,46,84,56,79,90,100 D.20,30 38,40,46,56,79,84,90,100

答案:A

13.在有序表{10,14,34,43,47,64,75,80,90}中,用折半查找法查找值80时,经( )次比较后查找成功。

A.4 B.2 C.3 D.5

答案:C

14.对序列(49,38,65,97,76,13,47,50)采用直接插入排序法进行排序,要把第七个元素47插入到已排序中,为寻找插入的合适位置需要进行( )次元素间的比较。

A.3 B.4 C.5 D.6

答案:C

15.排序方法中,从未排序序列中挑选元素,并将其依次放入已排序序列(初始为空)的一端的方法,称为( )排序。

A.归并 B.插入 C.选择 D.快速

答案:C

16.一组记录的关键字序列为(26,59,36,18,20,25),利用堆排序的方法建立的初始小根堆为( )。

A.26,18,59,20,36,25 B.18,20,25,59,26,36 C.18,20,36,59,26,25 D.26,59,36,18,20,25

答案:B

17.一组记录的关键字序列为(25,48,16,35,79,82,23,40,36,72),其中,含有5个长度为2的有序表,按归并排序的方法对该序列进行一趟归并后的结果为( )。

A.16,25,35,48,23,40,79,82,36,72 B.16,25,35,48,79,82,23,36,40,72 C.16,25,48,35,79,82,23,36,40,72 D.16,25,35,48,79,23,36,40,82,72

答案:A

18.已知10个数据元素为(54,28,16,34,73,62,95,60,26,43),对该数列从小到大排序,经过一趟冒泡排序后的序列为( )。

A.16,28,34,54,73,62,60,26,43,95 B.28,16,34,54,62,73,60,26,43,95 C.28,16,34,54,62,60,73,26,43,95 D.16,28,34,54,62,60,73,26,43,95

答案:B

19.一组记录的关键字序列为(46,79,56,38,40,84),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为( )。

A.40,38,46,79,56,84  B.40,38,46,56,79,84 C.40,38,46,84,56,79 D.38,40,46,56,79,84

答案:B

20.一组记录的关键字序列为(80,57,41,39,46,47),利用堆排序(堆顶元素是最小元素)的方法建立的初始堆为( )。

A.39,46,41,57,80,47 B.39,47,46,80,41,57 C.41,39,46,47,57,80 D.39,80,46,47,41,57

答案:A

二、程序填空题(每题10分,2题,共20分。请点击正确选项,然后拖拽至相应的方框上)

21.

以下函数是二叉排序树的查找算法,若二叉树为空,则返回根结点的指针,否则,返回值是指向树结点的结构指针p(查找成功p指向查到的树结点,不成功p指向为NULL)完成程序中的空格

typedef struct Bnode

{ int key;

struct Bnode *left;

struct Bnode *right;

} Bnode;

Bnode *BSearch(Bnode *bt, int k)

/* bt用于接收二叉排序树的根结点的指针,k用以接收要查找的关键字*/

{ Bnode *p;

if(bt== __NULL__)

return (bt);

p=bt;

while(p->key!= __k__)

{ if(kkey)

__p=p->left__;

else __p=p->right__;

if(p==NULL) break;

}

return(__p_;

}

22.

以下程序是折半插入排序的算法

设待排序的记录序列存放在a[1],…a[n]中,以a[0]作为辅助工作单元,程序是要把a[i] 插入到已经有序的序列a[1],…a[i-1]中。

void binsort (NODE a[ ],int n)

{ int x,i,j,s,k,m;

for (i=2;i



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3