堆排序大頂堆 堆排序的堆是怎么建立的?
堆排序的堆是怎么建立的?第一種方法是假設(shè)堆是空的,然后依次附加每個(gè)元素,因?yàn)槎训奶砑邮窍蛏险{(diào)整的(不是排序,不能使用堆排序來實(shí)現(xiàn)堆排序)。這意味著每個(gè)非根元素依次向上調(diào)整。第二種方法是按相反順序調(diào)整每
堆排序的堆是怎么建立的?
第一種方法是假設(shè)堆是空的,然后依次附加每個(gè)元素,因?yàn)槎训奶砑邮窍蛏险{(diào)整的(不是排序,不能使用堆排序來實(shí)現(xiàn)堆排序)。這意味著每個(gè)非根元素依次向上調(diào)整。
第二種方法是按相反順序調(diào)整每個(gè)非葉元素。
復(fù)雜性是。。。嗯,我記錯(cuò)了。第二個(gè)是O(n),比第一個(gè)低。
這是建造反應(yīng)堆的過程。但是一旦有了堆,排序就容易多了。重復(fù)(1)堆頭和堆尾的交換,(2)移除尾部元素并將它們放在另一個(gè)地方,(3)向下調(diào)整堆頭,直到堆為空。
堆排序要求從大到大排序,我是要建大頂堆?還是小頂堆?
建造大屋頂或小屋頂都可以。如果你建一個(gè)大屋頂樁,你可以選擇最大的一個(gè)每次。如果要從小到大排列,應(yīng)將選定的元素放在末尾。如果你想從大排到小排,你應(yīng)該把它們放在前面。但傳統(tǒng)上,它是大頂樁,從大到小排,小頂樁,從小到大排。
用一組{14,15,30,28,5,10}關(guān)鍵字序列,寫出初始建堆過程圖示,再根據(jù)初始堆寫出堆排序過程圖示?
起始順序是14,15,30,28,5,10,(1)所以起始堆如下:14,15,30,28,5,10(2)假設(shè)我們想得到一個(gè)從小到大的C,所以我們需要建立一個(gè)大的頂部堆,并且起始狀態(tài)是從下到上:步驟1:步驟2:14,30,28,14,25,10,10(3)初始堆已經(jīng)建立。此時(shí),頂層元素30是最大的元素,頂層元素與堆的最后一個(gè)元素交換。此時(shí),最上面的元素30是隊(duì)列末尾最大的元素,因此無需繼續(xù)排序。因此,堆如下圖所示:10 28 14 25 5(4)此時(shí),由于除10以外的所有其他堆被交換到堆的頂部基本上都是有序的,因此自上而下構(gòu)造得到的堆如下:28 25 14 10 5(5)重復(fù)步驟(3)和(4)確定28的位置,得到堆如下:25 1014 5(6)重復(fù)步驟(3)和(4)確定25的位置并獲得堆,如下所示:14 10 5(7)重復(fù)步驟(3)和(4)確定14的位置并獲得堆,如下所示:10 5(8)重復(fù)步驟(3)和(4)確定10的位置。此時(shí),只有數(shù)字5也位于堆的第一個(gè)位置,因此排序完成。