999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

堆排序的構(gòu)造方法探究

2020-11-10 04:38:45杜雙敏
電腦知識與技術(shù) 2020年27期
關(guān)鍵詞:排序

杜雙敏

摘要:堆排序作為一種內(nèi)排序算法,其特點是將待排序記錄R[1..n]看成一棵完全二叉樹的順序存儲結(jié)構(gòu),利用完全二叉樹中孩子結(jié)點和雙親結(jié)點之間的內(nèi)在關(guān)系,在當(dāng)前無序區(qū)中選擇關(guān)鍵字最?。ɑ蜃畲螅┑挠涗涊敵觯来蔚玫揭粋€有序序列。堆排序需要解決的兩個問題:一是如何將一個無序序列建成一個堆;二是在輸出堆頂元素之后,把剩余元素調(diào)整成為一個新堆。堆排序?qū)ι倭康挠涗泚碚f,其優(yōu)點不明顯,但對大量記錄來說是很有效的。

關(guān)鍵詞:堆排序;完全二叉樹

中圖分類號:TP399 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2020)27-0067-03

開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):

排序就是確定一種排列[Rj1,Rj2,…,Rjn],設(shè)含n個記錄的文件{R1,R2,…,Rn】,與其相應(yīng)的關(guān)鍵字為{k1,k2,…,kn),使得與它們相應(yīng)的關(guān)鍵字滿足遞增(或遞減)關(guān)系,即:Kj1≤Kj2≤…,Kjn這種操作過程就稱為排序。簡而言之,排序就是將一個數(shù)據(jù)元素(或記錄)的任意系列重新排成一個按關(guān)鍵字有序序列。如果在待排序的表中,存在多個相同關(guān)鍵字的記錄,經(jīng)過排序后這些相同關(guān)鍵字記錄之間的相對次序保持不變,則稱這種排序方法是穩(wěn)定的;反之,若相同關(guān)鍵字記錄之間的相對次序發(fā)生了變化,則稱這種排序方法是不穩(wěn)定的。

1964年J.willioms和Floyd提出了堆排序算法,堆排序是一樹型選擇排序,在其排序過程中的比較次數(shù)達(dá)到樹型選擇水平,同時又不增加存儲開銷。它的特點是將記錄R[1..n]看成一棵完全二叉樹的順序存儲結(jié)構(gòu),利用完全二叉樹中孩子結(jié)點和雙親結(jié)點之間的內(nèi)在關(guān)系,在當(dāng)前無序區(qū)中選擇關(guān)鍵字最?。ɑ蜃畲螅┑挠涗涊敵觥T谳敵龆秧?shù)淖钚≈担ɑ蜃畲笾担┲?,便將剩下的n一1個元素的序列重新建成一個堆,則得到n個元素的次最小值(或次最大值),如此反復(fù),便得到一個有序序列,這個過程我們稱之為堆排序。

堆排序算法的基本思想可以描述為:對一組待排序記錄的關(guān)鍵字,首先是按堆的定義將它們建成一個堆,排成一個序列,從而輸出堆頂?shù)淖钚。ɑ蜃畲螅╆P(guān)鍵字。然后將剩余的n-l個關(guān)鍵字再重新建成一個新堆,通常稱為重新調(diào)整成堆,便得到次小(或次大)的關(guān)鍵字輸出,如此反復(fù),直到全部關(guān)鍵字排序成有序序列。

堆的定義[1]為:

對于一個關(guān)鍵字序列(k1,k2,…,kn】,當(dāng)滿足:

稱此序列為堆(heap),其中,i=1,2,…,[n/2]。滿足條件①稱之為小根堆,滿足條件②稱之為大根堆。

堆排序需要解決的兩個問題:(1)如何將一個無序序列建成一個堆?(2)如何在輸出堆頂元素之后,把剩余的元素調(diào)整成為一個新的堆?

設(shè)記錄的關(guān)鍵字集合key={49,38,66,90,75,10,20),下面以其為例,來說明堆的構(gòu)造和堆的篩選、重建過程。

1 堆的構(gòu)造

我們可以借助完全二叉樹來描述堆。先把關(guān)鍵字集合key={49,38,66,90,75,10,20】構(gòu)造成一棵完全二叉樹。

依照Floyd篩選法,從完全二叉樹的第i(i=[n/2])個結(jié)點序號開始,對以此結(jié)點為根的子樹做必要調(diào)整,使該子樹為堆。然后再分別調(diào)整以第i-1,i-2,…,1個結(jié)點序號為根的子樹。

1)調(diào)整為小根堆

2)調(diào)整為大根堆

2堆的元素輸出及堆的重建

1)小根堆的元素輸出及堆的重建輸出75,90,完成排序輸出。

2)大根堆的元素輸出及堆的重建

輸出20,10,完成排序輸出。

以上就是堆排序的構(gòu)造過程。堆排序的過程是從一個無序序列建堆,反復(fù)篩選和進(jìn)行堆調(diào)整的過程。篩選就是自堆頂至葉子的調(diào)整過程。堆調(diào)整就是輸出堆頂元素之后,以堆的最后一個元素(葉結(jié)點)代替之。

其算法如下:

Void Heapsort(RecType R[],int n)

{ int i;

RecType temp;

for(i=n/2;i>=l;i--)

Sift(R,i,n);

for(i=n;i>=2;i--)

{ temp=R[1];

R[1]=R[i]

R[i]=temp;

sift(R,l,i-l);}

Void sift(RecType R[],int low,int high)

{ int i=low,j=2*i;

RecType temp=R[i];

While (j<=high)

{ if(R[j].key< R[j+l].key&&j

j++;

if(R[j ].key>temp.key)

{R[i]=R[j]

i=J;

j_2*i;)

else break;1

R[i]=temp;)

3 結(jié)束語

堆排序?qū)ι倭康挠涗泚碚f,其優(yōu)點不明顯,但對大量記錄來說是很有效的。堆排序在最壞的情況下,其平均時間復(fù)雜度為O(nlog2n),輔助空間O(1),它不穩(wěn)定。

參考文獻(xiàn):

[1]嚴(yán)蔚敏,吳偉民,數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,1996.

[通聯(lián)編輯:梁書]

猜你喜歡
排序
排排序
排序不等式
作者簡介
名家名作(2021年9期)2021-10-08 01:31:36
作者簡介
名家名作(2021年4期)2021-05-12 09:40:02
恐怖排序
律句填空排序題的備考策略
節(jié)日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
作者簡介(按文章先后排序)
名家名作(2017年2期)2017-08-30 01:34:24
按特定規(guī)律排序
兒童與健康(2012年1期)2012-04-12 00:00:00
主站蜘蛛池模板: 91久久国产综合精品女同我| 日韩高清在线观看不卡一区二区| 综1合AV在线播放| 国产第一色| 91在线无码精品秘九色APP| 亚洲国产欧美目韩成人综合| 在线观看欧美国产| 精品福利网| 亚洲黄网在线| 色综合久久88| 四虎永久在线精品国产免费| 亚洲AV人人澡人人双人| 中国一级特黄大片在线观看| 夜夜爽免费视频| 国产第一页第二页| 亚洲无码日韩一区| 国产精品区视频中文字幕| 精品国产成人a在线观看| 精品无码专区亚洲| 中文成人无码国产亚洲| 亚洲欧美另类视频| 久久综合五月婷婷| 中文字幕欧美日韩高清| 久久亚洲中文字幕精品一区 | 国产精品香蕉在线观看不卡| 99这里只有精品免费视频| 国产a在视频线精品视频下载| 中国一级毛片免费观看| 茄子视频毛片免费观看| 99精品国产高清一区二区| 国产免费久久精品99re不卡| 2021天堂在线亚洲精品专区 | 亚洲成肉网| 久久婷婷六月| 欧美日在线观看| 成年免费在线观看| 一区二区无码在线视频| 真实国产乱子伦视频| 日韩av无码DVD| 欧美激情成人网| 亚洲成人一区二区| 亚洲人成色在线观看| 激情国产精品一区| 欧美日韩成人| 国产成人8x视频一区二区| 看国产毛片| 最近最新中文字幕在线第一页| 国产精品福利导航| 中文字幕在线一区二区在线| 精品视频在线观看你懂的一区| 欧美一区二区三区国产精品 | 日韩免费中文字幕| 任我操在线视频| 亚洲欧美日韩动漫| 91黄色在线观看| 亚洲精品中文字幕午夜| 国产在线观看99| 亚洲精品国产精品乱码不卞 | 在线观看91香蕉国产免费| 青青青国产免费线在| 亚洲欧洲日产国产无码AV| 青青草原国产| 国产精品99一区不卡| 亚洲小视频网站| 欧美影院久久| 亚洲,国产,日韩,综合一区| 女人18一级毛片免费观看| 五月激情婷婷综合| 人人妻人人澡人人爽欧美一区 | 日本人妻丰满熟妇区| 日韩中文精品亚洲第三区| 香蕉视频在线观看www| 福利在线免费视频| 久久国产乱子伦视频无卡顿| 久久亚洲国产一区二区| 1级黄色毛片| 97国产在线视频| 无遮挡国产高潮视频免费观看| 国产精品第一区在线观看| 国内精品视频在线| 亚洲午夜18| 国产偷倩视频|