首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明,将应填入(n)处的字句写在答卷纸的对应栏内。 【说明】 下面的程序为堆排序程序,其中函数adjust(i,n)是把以R[i](1≤i≤┕i/2┙)为根的二叉树调整成堆的函数,假定R[i]的左、右子树已经是堆,程序中的,是在主函数中说明
阅读以下说明,将应填入(n)处的字句写在答卷纸的对应栏内。 【说明】 下面的程序为堆排序程序,其中函数adjust(i,n)是把以R[i](1≤i≤┕i/2┙)为根的二叉树调整成堆的函数,假定R[i]的左、右子树已经是堆,程序中的,是在主函数中说明
admin
2009-02-15
78
问题
阅读以下说明,将应填入(n)处的字句写在答卷纸的对应栏内。
【说明】
下面的程序为堆排序程序,其中函数adjust(i,n)是把以R
(1≤i≤┕i/2┙)为根的二叉树调整成堆的函数,假定R
的左、右子树已经是堆,程序中的,是在主函数中说明的结构数组,它含有要排序的n个记录。
【程序】
Void adjust(i,n)
Int i,n;
{
iht k,j;
element extr;
extr=r
;
k=i;
j=2*i;
while (j<=n )
{if ((j<n) && (r[j].key<r[j+1].key))
(1);
if (extr. key<r[j].key)
{
r[k]=r[j];
k=j;
(2);
}
else
(3);
}
r[k]=extr;
}
/*让i从┗i/2┛逐步减到1, 反复调用函数adjust, 便完成建立初始堆的过程。*/
void heapsort (r,n)
list r;
int n;
{
int i,1;
element extr;
for (i=n/2;i>=1;- -i)
(4); /* 建立初始堆*/
for (k--n;k>=2;k- -)
{
extr=r[1];
r[1]=r[k];
r[k]=extr;
(5);
}
}
选项
答案
(1)j++ (2)j*=2或j=k*2 (3)j=n+1或break (4)adjust(i,n) (5)adjust(1,k-1)
解析
函数adjust(i,n)是把以R
(1≤i≤┗i/2┛)为根的二叉树调整成堆的函数,假定R
的左、右子树已经是堆,程序中的r是在主函数中说明的结构数组,它含有要排序的n个记录。
Void adjust(i,n)
Int i,n;
{
int k,j;
element extr;
extr=r
;
k=i;
j=2*i;
while(j<=n)
{if((j<n)&&(r[j].key<r[j+ 1].key))
j++;
if(extr.key<r[j].key)
{
r[k]=r[j];
k=j;
j*=2;
}
else
j=n+1;
}
r[k]=extr;
}
/* 让i从┗i/2 ┛逐步减到1, 反复调用函数adjust, 便完成建立初始堆的过程。堆排序程序heapsort 如下*/
void heapsort(r,n)
list r;
int n;
{
int i,l;
element extr;
for (i=n/2;i>= 1 ;--i)
adjust(i,n); /*建立初始堆*/
for(k=n;k>=2;k--)
{
extr=r[1];
r[1]=r[k];
r[k]=extr;
adjust(1,k-1);
}
}
函数heapsoff的第一个for循环建立初始化。没待排序的n个记录组成—棵深度为h的完全二叉树,因此有2h-1<n≤2h+1-1,即2h≤n<2h+1。完全二叉树的第i层(设根结点的层次为0)上最多有2i个结点,对每个非叶结点,都要调用过程adjust,同时可能移动结点(向下移动),第i层上的结点可能要移动的最大距离为h-i,若设向下移动一层花费的时间为c,则第i层2i个结点调整的时间最多为c*(h-i)*2i建立初始堆的全部时间应是:
令j=h-1,则i=h-j,所以有:
对第二个for循环,调用adjust函数n-1次,每次总是由根向下调整,调整的最大距离为log2n(实际上,调整的距离是逐渐变小的),所以总的时间不多于c*(n-1)log2n=O(log2n).堆排序总的时间为:
O(n)+O(nlog2n)=O(max(n,n log2n))=O(n log2n)
算法需要的存储空间是存储n个记录的数组以及少量暂存单元。
堆排序算法是不稳定的。
转载请注明原文地址:https://kaotiyun.com/show/bMDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
(16)是一种面向数据流的开发方法,其基本思想是软件功能的分解和抽象。
对象是面向对象系统的最基本的元素,一个运行期系统就是对象之间的协作。一个对象通过()改变另一个对象的状态。
为保证测试活动的可控性,必须在软件测试过程中进行软件测试配置管理,一般来说,软件测试配置管理中最基本的活动包括(65)
网络测试不能解决的问题是______。A.连通性B.丢包C.全表扫描D.延迟
以下属于测试停止依据的是______。①测试用例全部执行结束②测试覆盖率达到要求③测试超出了预定时间④查出了预定数目的故障⑤执行了预定的测试方案⑥测试时间不足
堆是一种数据结构,分为大顶堆和小顶堆两种类型。大(小)顶堆要求父元素大于等于(小于等于)其左右孩子元素。则___________(41)是一个大项堆结构,该堆结构用二叉树表示,其高度(或层数)为___________(42)。(42)
某软盘有40个磁道,磁头从一个磁道移至另一个磁道需要5ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和25ms,则读取一个100块的文件需要时间为(24)。
()不属于程序的基本控制结构。
以下关于软件测试原则的叙述中,正确的是______。①测试开始得越早,越有利于发现缺陷②测试覆盖率和测试用例数量成正比③测试用例既需选用合理的输入数据,又需要选择不合理的输入数据④应制定测试计划并严格执行,排除随意性
随机试题
铁路公司和航空公司在提供客运服务方面,二者的竞争关系属于()。
TheEnglishlanguageweknowtodayisaboutsixhundredyearsold.Forhalfthattime,Englishwasjustthelanguageofthepeop
生态环境现状调查与评价的内容包括( )。
下列属于基本存款账户的存款人的有()。
曾在云梦山跟随纵横家鬼谷子学习的古代外交家和军事家不包括()。
初中数学内容的四大领域是____、____、____、____。
寻根祭祖园内虽然没有什么宏伟的建筑,但是不论严寒的冬天,还是酷热的盛夏,游客_________,有的赋诗题词,抒发“饮水思源”之幽情,有的仰望古槐,盘桓_________,久久不肯离去。依次填入画横线部分最恰当的一项是()。
2,7,24,77,()
跨媒体叙事是一种先进的内容创意理念,为创造整体的娱乐体验,分散地通过多种传递渠道进行整体故事创作的过程。在理想情况下,每种媒体都可以用其独特的优势为故事的叙述作贡献。根据上述定义,下列属于跨媒体叙事的是:
Beingsomewhatshort-sighted,shehadthehabitof______atpeople.
最新回复
(
0
)