数据结构C语言版第九章作业答案,数据结构(C语言版)习题及答案第九章

数据结构(C语言版)习题及答案

(从小到大排列),在(从大到小排列)情况下比较次数最多,其比较次数为(n(n-1)/2)。

5、对一组记录(50,40,95,20,15,70,60,45,80)进行直接插入排序时,当把

第7条记录60插入到有序表中时,为寻找插入位置需比较(3)次。

9.3 应用题

1、在各种排序方法中,哪些是稳定的?哪些是不稳定的?并为每一种不稳定的排序方

法举出一个不稳定的实例。

答:稳定的排序算法有直接插入排序、折半插入排序、冒泡排序、归并排序和基数排序。

不稳定的排序算法有希尔排序、直接选择排序、堆排序、快速排序。

例子:讲课是的例子。

2、设待排序的关键码分别为28,13,72,85,39,41,6,20。按折半插入排序已使

前七个记录有序,中间结果如下: 6 13 28 39 41 72 85 20 试在此基础上,沿用上述表达方式,给出继续采用折半插入第八条记录的比较过程,并回答

以下问题:

(1) 使用折半插入排序所要进行的比较次数,是否与待排序的记录的初始状态有关?

(2) 在一些特殊情况下,二分法插入排序比直接插入排序要执行更多的比较。这句话对吗?

答:

插入20的过程:

① 39>20:r=m-1=3;i<=r;m=(i+r)/2=4/2=2

② 13<20: i=m+1=3;i>r;查找过程结束,插入位置为i。

最终结果为:6 13 20 28 39 41 72 85

(1)插入排序所要进行的比较次数与待排序的记录的初始状态有关。若初始状态基本有序,

每次查找时都会搜索到有序表的最后一个元素才找到插入位置。若每次插入的元素在有序

表中的插入位置靠中间,则查找次数最少。

(2)在一些特殊情况下,二分法插入排序比直接插入排序要执行更多的比较。这句话是对

的。若初始状态基本有序,则折半插入排序,每次查找时都会搜索到有序表的最后一个元

素才找到插入位置。直接插入排序则每次只比较一次就找到合适位置。

3、已知一关键码序列为:3,87,12,61,70,97,26,45。试根据堆排序原理,填写

完整下示各步骤结果。

建立初始堆:_97 87 26 61 70 12 3 45

堆排序过程:

(1)87 70 26 61 45 12 3 97;(2) 70 61 26 3 45 12 87 97;

(3)61 45 26 3 12 70 87 97;(4) 45 12 26 3 61 70 87 97;

(5)26 12 3 45 61 70 87 97;(6) 12 3 26 45 61 70 87 97;

(7)3 12 26 45 61 70 87 97;

4、全国有10000人参加物理竞赛,只录取成绩优异的前10名,并将他们从高分到低分

输出。而对落选的其他考生,不需排出名次,问此种情况下,用何种排序方法速度最快?为

什么?

答:因排序的元素个数很大,所以需要采用排序速度较快的排序方法。排序速度比较

快的排序方法有快速排序、堆排序、归并排序和基数排序等。其中快速排序、归并排序和

基数排序都是在排序结束后才能确定数据元素的全部序列,而排序过程中无法知道部分连

续位置上的最终元素。但堆排序则每次输出一个堆顶元素(即最大或最小元素),然后对堆

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.对于二叉排序树,下面的说法( )是正确的。 A.二叉排序树是动态树表,查找不成功时插入新结点时,会引起树的重新分裂和组合 B.对二叉排序树进行层序遍历可得到有序序列 C.用逐点插入法构造二叉排序树时,若先后插入的关键字有序,二叉排序树的深度最大 D.在二叉排序树中进行查找,关键字的比较次数不超过结点数的1/2 2.在有n个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为( )。 A.O(n) B.O(log2n) C.O(n*log2n) D.O(n2) 3.静态查找与动态查找的根本区别在于( )。 A. 它们的逻辑结构不一样 B. 施加在其上的操作不同 C. 所包含的数据元素类型不一样 D. 存储实现不一样 4.已知一个有序表为{12,18,24,35,47,50,62,83,90,115,134},当折半查找值为90的元素时,经过( )次比较后查找成功。 A.2 B.3 C.4 D.5 5.已知数据序列为(34,76,45,18,26,54,92,65),按照依次插入结点的方法生成一棵二叉排序树,则该树的深度为( )。 A. 4 B. 5 C. 6 D. 7 6.设散列表表长m=14,散列函数H(k)=k mod 11 。表中已有15,38,61,84四个元素,如果用线性探测法处理冲突,则元素49的存储地址是( )。 A. 8 B. 3 C. 5 D. 9 7. 平衡二叉树的查找效率呈( )数量级。 A. 常数阶 B. 线性阶 C. 对数阶 D. 平方阶 8. 设输入序列为{20,11,12,…},构造一棵平衡二叉树,当插入值为12的结点时发生了不平衡,则应该进行的平衡旋转是( )。 A. LL B. LR C. RL D. RR 二、填空题(每空3分,共24分)。 1.在有序表A[1..18]中,采用二分查找算法查找元素值等于A[7]的元素,所比较过的元素的下标依次为 。 2.利用逐点插入法建立序列(61,75,44,99,77,30,36,45)对应的二叉排序树以后,查找元素36要进行 次元素间的比较,查找序列为 。 3. 用顺序查找法在长度为n的线性表中进行查找,在等概率情况下,查找成功的平均比较次数是 。 4. 二分查找算法描述如下: intSearch_Bin(SST ST, KT key) { low=1 ; high=ST. length; while(low<=high) { mid=(low+high)/2; if(key==ST.elem[mid].key) return mid; else if(key<ST.elem[mid].key) ; else ; } return 0; } 5.链式二叉树的定义如下: typedef struct Btn{ TElemType data; ; }BTN ,*BT; 6.在有n个叶子结点的哈夫曼树中,总结点数是 。 三、综合题(共52分)。 1. (共12分)假定关键字输入序列为19,21,47,32,8,23,41,45,40,画出建立二叉平衡树的过程。 2. (共15分)有关键字{13,28,31,15,49,36,22,50,35,18,48,20},Hash 函数为H=key mod 13,冲突解决策略为链地址法,请构造Hash表(12分),并计算平均查找长度(3分)。 ASL= 3. (共10分)设关键字码序列{20,35,40,15,30,25},给出平衡二叉树的构造过程。 4. (共15分)设哈希表长为m=13,散列函数为H(k)=k mod 11,关键字序列为5,7,16,12,11,21,31,51,17,81;试求:散列后的表中关键字分布(假定解决冲突的方法为线性探测再散列法);求平均查找长度ASL;计算该表的装填因子。 (1)按要求求哈希表(10分): 0 1 2 3 4 5 6 7 8 9 10 11 12 (2)计算ASL(3分): ASL= (3)计算装填因子(2分):装填因子=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值