堆排序如何建堆 什么是堆排序?
什么是堆排序?快速排序和堆排序都不穩(wěn)定?不穩(wěn)定:兩個大小相同的數(shù)字,經(jīng)過排序,最終位置和初始位置交換??焖倥判颍?7 23 27 3以前27為軸心,然后27與后3交換形成3 23 27。排序結(jié)束一次,
什么是堆排序?
快速排序和堆排序都不穩(wěn)定?
不穩(wěn)定:兩個大小相同的數(shù)字,經(jīng)過排序,最終位置和初始位置交換??焖倥判颍?7 23 27 3以前27為軸心,然后27與后3交換形成3 23 27。排序結(jié)束一次,但最后的27不穩(wěn)定,因為它早于排序開始處的初始位置3,即27。堆排序:例如:3 27 36 27,如果前3級先輸出,則第三級27(最后27級)運行到堆的頂部,然后堆穩(wěn)定并繼續(xù)輸出堆的頂部,即前27級。這說明接下來的27個輸出先于第二個27個,這是不穩(wěn)定的。
什么是堆排序?
第一種方法是假設(shè)堆是空的,然后依次附加每個元素,因為堆的添加是向上調(diào)整的(不是排序,不能使用堆排序來實現(xiàn)堆排序)。這意味著每個非根元素依次向上調(diào)整。
第二種方法是按相反順序調(diào)整每個非葉元素。
復(fù)雜性是。。。嗯,我記錯了。第二個是O(n),比第一個低。
這是建造反應(yīng)堆的過程。但是一旦有了堆,排序就容易多了。重復(fù)(1)堆頭和堆尾的交換,(2)移除尾部元素并將它們放在另一個地方,(3)向下調(diào)整堆頭,直到堆為空。