我試圖堆積一個數組。我的代碼使用一組唯一值正常工作。但是有重複條目的問題。最大值始終在根上實現。然而,結果並不是一堆。用重複數組對陣列進行堆積
CODE:
static int arr[7] = { 5, 6, 7, 4, 1, 3, 7 };
int _tmain(int argc, _TCHAR* argv[])
{
for (int i = (6 - 1)/2; i >= 0; i--)//assuming size 7(0 to 6)
{
heapify2(i);
}
return 0;
}
void heapify2(int key)
{
int nextchoice = (arr[2 * key + 1] > arr[2 * key + 2] ? (2 * key + 1) : (2 * key + 2));
if (arr[key] < arr[nextchoice])
{
arr[key] += arr[nextchoice];
arr[nextchoice] = arr[key] - arr[nextchoice];
arr[key] = arr[key] - arr[nextchoice];
}
}
RESULTANT堆: 7,6,5,4,1,3,7
這裏,最後一個節點7自帶5歲以下 有沒有更好的辦法解決這個問題?
請注意,我編輯了您的代碼示例以修復格式。下次使用空格而不是製表符。 –