我正在使用動態數組來表示最小堆。有一個循環可以刪除最小值,並在最小堆中添加隨機元素,直到發生某種情況。雖然我不知道堆的長度在運行時如何變化(有很多隨機性),但我知道上限是1000萬。我有兩種選擇:多個realloc比一個巨大的malloc更貴嗎?
1)使用malloc聲明一個小數組,然後在堆中的元素數量超過該長度時調用realloc。
2)聲明瞭1000萬條目陣列使用malloc。這避免了調用realloc。
問題
是選項2比方案1更有效?
我與我的代碼使用2。這是因爲在代碼中隨機性的估計測試這一點,似乎有顯著(20%),運行時間減少。使用malloc預先聲明一個大型的10-50萬個入口數組有沒有什麼缺點?
感謝您的輸入。 +1 – Legendre