0
我正在寫一個函數來使用堆排序來排序數組。到目前爲止,我有:堆排序不產生正確的輸出
template <typename Item, typename SizeType>
void heap_sort(Item data[], SizeType size) {
vector<int> v(data,data+size);
SizeType unsorted = size;
make_heap(v.begin(),v.end());
while(unsorted > 1) {
--unsorted;
swap(data[0], data[unsorted]);
reheapify_down(data,unsorted);
}
}
和:
template <typename Item, typename SizeType>
void reheapify_down(Item data[], SizeType size) {
SizeType current(0), big_child;
bool heap_ok = false;
while(!heap_ok && 2*current+1 < size) {
if(2*current+2 > size)
big_child = 2*current + 1;
else if(data[2*current+1] > data[2*current+2])
big_child = 2*current+1;
else
big_child = 2*current + 2;
if(data[current] < data[big_child]) {
swap(data[current],data[big_child]);
current = big_child;
}
else
heap_ok = true;
}
}
當我運行程序,它雖然輸出正確排序的數組。有什麼我只是失蹤或我忽略了一些錯誤?
給我們一些樣本輸入和輸出。 –
那麼我的程序已經排序了一組隨機生成的整數值到現在爲止,但隨機數組的大小爲10的輸出如下所示:0424488971. –
我現在要通過並設置一個測試數組來查看它產生的結果。 –