数据结构(本科)作业4
(2009-03-31 19:45:31)
标签:
数据结构作业教育 |
数据结构(本)课程作业
作业4
(本部分作业覆盖教材第8-9章的内容)
一、单项选择题
1.顺序查找方法适合于存储结构为(
A.散列存储
C.散列存储或索引存储
2.对线性表进行二分查找时,要求线性表必须(
A.以顺序存储方式
C.以顺序存储方式
,且数据元素有序
D.以链接存储方式,且数据元素有序
3.如果要求一个线性表既能较快地查找,又能动态适应变化要求,可以采用(
A.顺序
C.折半
4.
对于一个线性表,若要求既能进行较快地插入和删除,又要求存储结构能够反映数据元素之间的逻辑关系,则应该(
A.以顺序存储方式
C.以索引存储方式
5.采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为(
A.n
C.(n+1)/2
6.采用折半查找方法查找长度为n的线性表时,每个元素的平均查找长度为(
A.O(n*n)
C.O(n)
7.哈希函数有一个共同的性质,即函数值应当以(
A.最大概率
8.有一个长度为10的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为(
A.29/10
9.已知一个有序表为{11,22,33,44,55,66,77,88,99},则顺序查找元素55需要比较(
A.3
10.顺序查找法与二分查找法对存储结构的要求是(
A.顺序查找与二分查找均只是适用于顺序表
B.顺序查找与二分查找均既适用于顺序表,也适用于链表
C.顺序查找只是适用于顺序表
D.二分查找适用于顺序表
11.有数据{53,30,37,12,45,24,96},从空二叉树开始逐个插入数据来形成二叉排序树,若希望高度最小,应该选择的序列是(
A.45,24,53,12,37,96,30
C.12,24,30,37,45,53,96
12.对有18个元素的有序表作二分(折半)查找,则查找A[3]的比较序列的下标可能为(
A.1、2、3
C.9、5、3
13.
对于顺序存储的有序表{5,12,20,26,37,42,46,50,64},若采用折半查找,则查找元素26的比较次数是(
A.3
14.关于哈希查找的说法正确的是(
A.除留余数法是最好的
B.
哈希函数的好坏要根据具体情况而定
C.删除一个元素后,不管用哪种方法处理冲突,都只需简单地把该元素删除掉
D.因为冲突是不可避免的,所以装填因子越小越好
15.在所有的排序方法中,关键字比较的次数与记录初始排列秩序无关的是(
A.
冒泡排序
16.从未排序序列中依次取出元素与已经排好序的序列中的元素作比较。将其放入已排序序列的正确的位置上,此方法称为(
A.
插入排序
17.从未排序序列中挑选元素,并将其放入已排序序列的一端,此方法称为(
A.
插入排序
18.依次将每两个相邻的有序表合并成一个有序表的排序方法称为(
A.
插入排序
19.当两个元素出现逆序的时候就交换位置,这种排序方法称为(
A.
插入排序
20.每次把待排序的区间划分为左、右两个子区间,其中左区间中记录的关键字均小于等于基准记录的关键字,右区间中记录的关键字均大于等于基准记录的关键字,这种排序称为(
A.
插入排序
21.在正常情况下,直接插入排序的时间复杂度为(
A.
O(log2n)
22.在正常情况下,冒泡排序的时间复杂度为(
A.
O(log2n)
23.在归并排序中,归并趟数的数量级为(
A.
O(log2n)
24.在待排序元素基本有序的情况下,效率最高的排序方法是(
A.
插入排序
25.下面几种排序方法中,要求内存量最大的是(
A.
插入排序
26.在下列排序方法中,关键字比较的次数与记录的初始排列秩序无关的是(
A.
希尔排序
27.快速排序方法在(
A.
要排序的数据量太大
C.
要排序的数据已基本有序
28.下述几种排序方法中,平均情况下占用内存量最大的是(
29.若构造一棵具有n个结点的二叉树排序,在最坏的情况下,其深度不会超过(
A.
n/2
30.对数据元素序列(49,72,68,13,38,50,97,27)进行排序,前三趟排序结果时的结果依次为:第一趟:49,72,68,13,38,50,97,27;第二趟:49,68,72,13,38,50,97,27;第三趟:13,49,68,72,38,50,97,27。该排序采用的方法是(
A.
插入排序法
31.对具有n个元素的任意序列采用插入排序法进行排序,排序趟数为( )。
A. n-1
32.对序列(49,38,65,97,76,13,47,50)采用直接插入排序法进行排序,要把第七个元素47插入到已排序中,为寻找插入的合适位置需要进行( )次元素间的比较。
A. 3
33.下面四种排序方法中,( )是一种稳定性排序方法。
A. 插入排序法
34.一组记录的关键字序列为(46,79,56,38,40,84),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为(
A.40,38,46,79,56,84
C.40,38,46,56,79,84
35.一组记录的关键字序列为(46,79,56,38,40,84),利用堆排序的方法建立的初始堆为(
A.79,46,56,38,40,84
C.84,79,56,46,
40,38,
36.一组记录的关键字序列为(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
37.已知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
38.用某种排序的方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,元素序列的变化情况如下:其所采用的排序方法是(
(1)25,84,21,47,15,27,68,35,20
(2)20,15,21,25,47,27,68,35,84
(3)15,20,21,25,35,27,47,68,84
(4)15,20,21,25,27,35,47,68,84
A. 希尔排序
二、填空题
1.在各种查找方法中,平均查找长度与结点个数n无关的查找方法是
2.如果对查找表只进行查询某个特定的数据元素是否在查找表中,以及查找某个特定数据元素的各种属性两种类型的基本操作,而不进行插入和删除操作数据元素的查找表称为
3.如果在查找表中进行查询的过程中,同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素,则称此类查找表为
4.关键字是记录某个
5.在一个查找表中,能够唯一地确定一个记录的关键字称为
6.平均查找长度是指为确定记录在查找表中的位置,需要与给定值进行比较的关键字个数的
7.
8.折半查找又称为
9.折半查找只适用于
10.分块查找又称为
11.二叉排序树或者是一棵空树,或者是具有下列性质的一棵二叉树:
12.哈希表是用来存放查找表中记录序列的表,每一个记录的存储位置是以该记录得到关键字为
13.在有序表A[1….18]中,采用二分查找算法查找元素值等于A[17]的元素,所比较过的元素的下标依次是
14.根据排序过程中所用的存储器不同,可以将排序方法分为
15.冒泡排序是一种比较简单的
16.在对一组记录(50,40,95,20,15,70,60,45,80)进行直接插入排序时,当把第7个记录60插入到有序表时,为寻找插入位置需要比较
17.在归并排序中,在第3趟归并中,是把长度为
18.在堆排序和快速排序中,若原始记录接近正序和反序,则选用
19.对记录序列排序是指按记录的某个关键字排序,记录序列按_________排序结果是唯一的。
20.按某关键字对记录序列排序,
21.n个元素进行冒泡法排序,通常需要进行________趟冒泡,第j趟冒泡要进行______次元素间的比较。
22.当从一个小根堆中删除一个元素时,需要把
三、综合题
1.已知序列(70,83,100,105,10,32,7,9),请写出对此序列采用插入排序法进行升序排序时各趟的结果。
2.已知序列(10,18,4,3,6,12,1,9,15,8),请写出对此序列采用归并排序法进行升序排序时各趟的结果。
3.已知序列(17,18,60,40,7,32,73,65,85)请给出采用冒泡排序法对该序列作升序排列时的每一趟结果。
4.已知序列(503,87,512,61,908,170,897,275,653,462)请给出采用快速排序法对该序列作升序排列时的每一趟结果。
5.设一组记录的关键字序列为(51,85,61,43,45,49),采用堆排序算法完成以下操作:(要求小根堆,并画出中间过程)
(1)以二叉树描述6个元素的初始堆
(2)以二叉树描述逐次取走堆顶元素后,经调整得到的5个元素、4个元素的堆
6.设查找表为(20,19,24,57,68,11)
7.(1) 设有查找表{8,17,5,9,21,10,7,19,6},依次取表中数据,构造一棵二叉排序树.
四、程序填空题
1.以下直接输入排序算法对存放在a[0],a[1],···,a[n-1]中,长度为n的记录序列按关键字key由小到大排序,完成程序中的空格部分。
void disort (NODE a[ ], int n)
{
}
2.以下冒泡法程序对存放在a[1],a[2],……,a[n]中的序列进行冒泡排序完成程序中的空格部分,其中n是元素个数,程序按升序排列。
Void bsort (NODE
}
程序中flag的功能是
(5)
五、算法设计题
1.写出在二叉树中删除一个结点的算法,且使删除后仍为二叉树,设删除的结点由指针p所指,其双亲结点由指针f所指,并假设被删除结点是其双亲结点的右孩子。
2.编写顺序查找算法。
六、完成:实验5――查找
根据实验要求(见教材P203)认真完成本实验,并提交实验报告。