如果我們按照升序排列數組,那麼我們將得到二進制堆。這種優勢有什麼缺點嗎?如果是,那麼這是什麼原因呢?使用數組快捷方式形成二進制堆
0
A
回答
0
「按照升序排列數組,然後我們會得到Binary Heap」。這是對的。 現在,它取決於您使用哪種算法按升序對數組進行排序。最佳分類算法的執行復雜度爲O(NLogN)
。
雖然剛剛創建二進制堆的算法Build_Heap
的複雜度爲O(N)
。
除非和直到您使用非基於比較的排序方法(如Counting Sort
),否則創建二進制堆的複雜性將至少爲O(NLogN)
和O(N^2)
。
因此,創建二進制堆的傳統方法是有利的。
雖然Counting Sort
需要O(N)
時間,但它需要額外的空間O(N)
,而傳統Build_Heap
將創建就地二元堆。
+0
您不能在O(N)時間進行比較排序。比較排序是O(N log N)。非比較方法(如基數排序)可能是O(N),但需要額外的空間。 –
+0
@JimMischel:錯誤寫了'比較'而不是'計數'。感謝您的更正。 – sameerkn
相關問題
- 1. 在Swift中將圖像十六進制轉儲轉換爲二進制數組的更快捷方式
- 2. 快捷方式到達java堆棧跟蹤控制檯
- 3. 使用二進制堆合併多個數組
- 4. Python快捷方式
- 5. 以編程方式創建組合桌面快捷鍵「快捷方式」
- 6. NetBeans IDE代碼完成快捷方式
- 7. 使用.Net創建快捷方式
- 8. 網站快捷方式使用PowerShell
- 9. 使用wpf webbrowser防止快捷方式
- 10. 複製快捷方式到桌面
- 11. c#發送控制快捷方式
- 12. Apache的別名:製作快捷方式
- 13. 控制wix中的快捷方式
- 14. 創建批處理和快捷方式的快捷方式
- 15. WiX快捷方式覆蓋現有的同名快捷方式
- 16. Qt - 刪除快捷方式 - 模糊的快捷方式超載
- 17. 快捷方式在Silverlight和默認瀏覽器快捷方式
- 18. 快捷方式方法參數
- 19. 在mac中使用快捷方式進行調試
- 20. 使用TcpClient進行通信的更快捷方式?
- 21. 「快捷方式製造商」和「應用程序快捷方式製造商」如何運作?
- 22. 在Visual Studio中使用快捷方式自動生成代碼?
- 23. 以數組的形式讀取二進制.dat文件
- 24. 快捷方式用於創建字符數組
- 25. 更快的方式寫的二進制文件與Python /用Cython
- 26. 十進制數轉換在半字節的二進制形式
- 27. 什麼是簡單合併文件的最快捷方式,什麼是分割數組的最快捷方式?
- 28. ActiveRecord中的快捷方式?
- 29. Clojure:when-let的快捷方式
- 30. Keydown鍵盤快捷方式
缺點是排序數組比使用傳統的BuildHeap方法花費的時間更長。 –