小根堆怎么写

1. 什么叫堆

堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左子节点和右子节点的值。

最大堆和最小堆是二叉堆的两种形式。

最大堆(大根堆):根结点的键值是所有堆结点键值中最大者。

最小堆(小根堆):根结点的键值是所有堆结点键值中最小者。

而最大-最小堆集结了最大堆和最小堆的优点,这也是其名字的由来。

最大-最小堆是最大层和最小层交替出现的二叉树,即最大层结点的儿子属于最小层,最小层结点的儿子属于最大层。

以最大(小)层结点为根结点的子树保有最大(小)堆性质:根结点的键值为该子树结点键值中最大(小)项。

扩展资料

在考虑将以Ki为根的子树排成堆时,以Ki+1,Ki+2,…,Kn-1为根的子树已经是堆,所以这时如果有Ki≤K2i+1和Ki≤K2i+2,则不必改变任何结点的位置,以Ki为根的子树就已经是堆;否则就要适当调整子树中结点的位置以满足堆的定义。由于Ki的左、右子树都已经是堆,根结点是堆中最小的结点,所以调整后Ki的值必定是原来K2i+1和K2i+2中较小的一个。

不妨假定K2+1较小,将Ki与K2i+1交换位置,这样调整后Ki≤K2i,Ki≤K2i+1,并且以K2i+2为根的子树原来已经是堆,不必再作任何调整,只有以K2i+1为根的子树由于K2i+1的值已经发生变化(与Ki交换了),所以有可能不满足堆的定义(当K2i+1的左、右子树已经是堆)。

这时可重复上述过程,考虑将K2i+1以为根的子树排成堆。如此一层一层递推下去,最多可以一直进行到树叶。由于每步都保证将子树中最小的结点交换到子树的根部,所以这个过程是不会反馈的。它就像过筛一样,把最小的关键码一层一层选择出来。

参考资料来源:搜狗百科-最小堆

2. 如何建立堆(给出大根堆和小根堆的源程序,要PASCAL的)

Procedure sift(i,m:integer);{调整以i为根的子树成为堆,m指前m个结点}

var t,k:integer;

begin

t:=a[i];

k:=2*i;{在完全二叉树中结点i的左孩子为2*i,右孩子为2*i+1}

while k<=m do

begin

if (k<m) and (a[k]<a[k+1]) then inc(k);{找出a[k]与a[k+1]中较大值}

if t<a[k] then {选取最大根}

begin

a[i]:=a[k];

i:=k; {修改i,k的值,以便继续向下筛选}

k:=2*i;

end

else k:=m+1;{筛选完成,以便终止循环}

end;

a[i]:=t; {将根放在合适的位置}

end;

Procedure heapsort;

var

i:integer;

begin

for i:=n div 2 downto 1 do sift(i,n); {用数组模拟二叉树建堆}

for i:=n downto 2 do {从大到小输出}

begin

write(a[1],' '); swap(a[1],a[i]);{a[1]:=a[i]}

sift(1,i-1);

end;

writeln(a[1]);

end;

小根堆改改就出来了。

转载请注明出处育才学习网 » 小根堆怎么写

知识

尘土该怎么写

阅读(191)

本文主要为您介绍尘土该怎么写,内容包括尘土作文300,尘土作文,想写一篇关于很多尘土的作文要用什么题目。大家好,我是一颗灰尘。我们是人人讨厌的东西,我们有碍环境卫生,危害人类健康。因此,古往今来,人们总是“时时勤拂拭,勿使染尘埃。”然而你

知识

口十请怎么写

阅读(278)

本文主要为您介绍口十请怎么写,内容包括用口十木每写藏头诗跪求,用口十木每写藏头诗跪求,囗十口十口=301.3.5.7.9.11.13.15.这些数字可以重复使用请填写。10进制下不可能,但是谁说这是10进制下的计算呢?这个世界上还有2进制,还有16进制,现在要

知识

保安证怎么写

阅读(177)

本文主要为您介绍保安证怎么写,内容包括考保安证个人简历怎么写,保安工作证明怎么写,保安员职称和保安员专业分别怎么填写。给您一个样板,供您参考!招聘启示因XX公司业务发展的需要,现面向社会公开招聘保安员一批,应聘者须具备以下条件:政治合格

知识

怎么写一十万

阅读(169)

本文主要为您介绍怎么写一十万,内容包括数字100000的大写怎么写,大写一十万元怎么写,大写十万怎么写,11万小写怎么写。十万元整大写为壹拾万元整。中文大写金额数字到“元”为止的,在"元"之后,应写"整"字,在"角"之后,可以不写"整"字。大写金额数字有"分

知识

器的淘怎么写

阅读(165)

本文主要为您介绍器的淘怎么写,内容包括淘气的淘怎么写,淘器的读音,淘的笔画顺序怎么写。淘,作动词的意思是:同本义。组词如下:淘炊、淘盆、淘洗、淘干净、淘漉、淘戗、淘金2、淘,作动词的意思是:通“掏”。疏浚。组词如下:淘浚、

知识

怎么写伦

阅读(262)

本文主要为您介绍怎么写伦,内容包括伦字怎么写好看,伦的笔顺怎么写,行书伦怎么写。伦的繁体字写作:

知识

飂怎么写

阅读(141)

本文主要为您介绍飂怎么写,内容包括“飂”这个字怎么读,“飂”念什么道德经里的“飂”这个字怎么读,"飂"字怎么读。飂 拼音:liù liáo 注音:ㄌㄧㄡˋ ㄌㄧㄠˊ 部首:风,部外笔画:11,总笔画:20 五笔86:MTJE 五笔98:WTJE

知识

刀客怎么写

阅读(177)

本文主要为您介绍刀客怎么写,内容包括形容刀客的句子,形容“刀客”的语句,形容刀客的词语。1. 刀并不快,可是当你看见的时候,它像月光一样,已经落到了你的身上。2. 这句话雕刻在一柄刀上,一柄弯弯的刀。弯得像青青的眉,青如远山

知识

打仗怎么写的

阅读(197)

本文主要为您介绍打仗怎么写的,内容包括打仗的仗怎么写,打仗的仗字怎么写,检讨书,关于打仗的,怎么写。检讨书 尊敬的老师: 今天,我怀着十二万分的愧疚以及十二万分的懊悔给您写下这份检讨书,以向您表示我对旷课这种恶劣行为的深痛恶绝及打死也

知识

祭坟怎么写

阅读(327)

本文主要为您介绍祭坟怎么写,内容包括清明忙祭坟的清况的作文怎么写,祭坟用的包怎么写,一年级祭祖坟看图写话。今天,我和爸爸妈妈,骑着摩托车,带着供品和鲜花,去岩里给爷爷扫墓。一到那里,我惊奇地发现那里密密麻麻,到处是相同的“房子”,我好奇地

知识

西安安怎么写

阅读(198)

本文主要为您介绍西安安怎么写,内容包括陕西话怎么写啊,急安字组7个词怎么做,中国书法,楷书里面的“安”字怎么写好。仅从以安字命名的很多地名中,就可以看出:中国人一贯是多么渴盼天下长治久安了。长安虽不再是首都,但负载和象征的仍是天下的

知识

想古代怎么写

阅读(208)

本文主要为您介绍想古代怎么写,内容包括想写古代文,我该做什么知道什么,表示安静的古代字,我记得是读yi我很想知道怎么写,我想知道古代我喜欢你怎么写。1.得看你想写什么朝代,如果是架空可以模仿某一朝代的【礼仪制度称呼】(要想写一篇真正的

知识

舆图怎么写

阅读(165)

本文主要为您介绍舆图怎么写,内容包括舆用简化字写是什么,唐代长安的舆图到底是什么样的,为什么网友都在寻找“正版的长安舆,“舆”这个字的拼音怎么写。

知识

记着搞怎么写

阅读(157)

本文主要为您介绍记着搞怎么写,内容包括个人简历怎么写,日记怎么写,日记要怎么写。到网上去搜索吧~~很多的~~ 标准简历(简历模板) 简历模板 个人概况: 求职意向; ________________ 姓名: ____

[/e:loop]