5
回過頭來,我們被賦予了寫一個c程序的任務,該程序使用d-ary最大堆(每個節點最多有d個孩子的堆)對n個數字排序。該程序需要用戶輸入d的值,該值是2和數組大小之間的值。當我檢查程序時,我意外地輸入了1作爲d的值,並且不知何故該算法成功地使用1堆堆正確地對數組進行排序,儘管它比d的正常值花費了更多時間。1-ary堆排序?
這怎麼可能? 1-ary堆甚至不是堆,就像列表一樣,每個節點只有一個孩子。任何人都可以解釋這種排序如何發生?
所以實際發生的是插入排序的無效率變體? – Bob 2010-12-12 12:02:27
這是一個標準的插入排序,接下來是一系列「流行」操作,涉及將堆中的所有元素從「n」移動到「n-1」。 – 2010-12-12 12:15:16