0
我正準備參加Google開發者面試並處理算法問題。我需要弄清楚如何使用Heapsort算法得到大小爲n的第一個元素x。算法的哪個部分需要修改才能得到最小的第一個元素?獲取Heapsort的前x個元素
這是簡介堆排序算法,算法由Cormen Leiserson(第155頁):
HEAPSORT(A)
{
BUILD-MAX-HEAP(A)
for i = A.length down to 2
exchange A[1] with A[i]
A.heap-size = A.heap-size - 1
MAX-HEAPIFY(A, 1)
}
這些組件的算法:
BUILD-MAX-HEAP(A)
A.heap-size = A.length
for i = floor(A.length/2) down to 1
MAX-HEAPIFY(A, i)
MAX-HEAPIFY(A, i)
l = LEFT(i)
r = RIGHT(i)
if l <= A.heap-size and A[l] > A[i]
largest = l
else largest = r
if r <= A.heap-size and A[r] > A[largest]
largest = r
if largest != i
exchange A[i] with A[largest]
MAX-HEAPIFY(A, largest)
我想不出什麼部分進行修改以獲得排序後的數組的最小元素。還需要找到修改算法的時間複雜度。