如果有一個圖書館所有書籍已經排序,除了只有一本書沒有存儲在它應該是的地方。我應該使用哪種算法以最短的時間對這個庫進行排序?目前我認爲它將與O(nlogn)合併排序。任何比這更快的算法?什麼是最好的算法來排序在圖書館幾乎排序的書籍
0
A
回答
2
- 找到圖書(索引
i
)的位置 - 線性掃描 j>i
一個地方篩所有的書與指數權- 將書籍在新的自由空間
這是在O(n)中完成的,數據只有2次通過,並且可以通過將步驟(1)和(2)組合在一起完成而優化爲僅在一次通過中完成。
還要注意:
這基本上是做歸併兩個陣列,(但是具有O(1)額外的空間,該變型):
- 原件(排序陣列)
- 新書(也是大小爲1的排序陣列)
由於array(1) - Original已經排序,所以可以跳過rec ursive調用它,然後直接進入mergesort的合併步驟。
1
如果您確定它幾乎已排序,那麼插入算法甚至泡泡將是最好的......實際上,合併不會是最好的,因爲它會進行太多的訂單檢查。
看看this gif,它可能會幫助你:)
相關問題
- 1. 特殊算法,圖書館和書籍
- 2. 書籍排序程序
- 3. 圖書館應用程序。在編輯書籍方法
- 4. 什麼是圖書館?
- 5. 什麼是最好的圖書館與檔案工作
- 6. 這種情況下最好的排序算法是什麼?
- 7. 什麼是最好的預留座位排序算法?
- 8. 什麼是最快的快速排序 - 排序算法的排名表?
- 9. 更好的排序技術幾乎排序的列表
- 10. 您將使用什麼排序算法對大型,幾乎排序的列表進行排序
- 11. 頻繁項集最好的算法和圖書館
- 12. 什麼是一個好的圖書館畫在c + +的屏幕?
- 13. 還有什麼好的iOS 5書籍?
- 14. 什麼是HTML,CSS,PHP,Javascript等最好的書籍
- 15. Dart的國際圖書館是什麼?
- 16. WCF圖書館應用程序的出發點是什麼?
- 17. 這是什麼樣的排序算法?
- 18. 哪種排序算法最適合重新排序幾乎完全排序的列表?
- 19. 排序SQL書籤
- 20. 在scala中反向排序的最好方法是什麼?
- 21. 在python中反向排序的最好方法是什麼?
- 22. 好的網站和/或書籍來學習遊戲算法?
- 23. 圖書館對圖書館的引用
- 24. 在圖書館數據庫中標記書籍
- 25. 遞增值,如果書籍在圖書館管理系統
- 26. 排序部分排序列表的最佳方法是什麼?
- 27. 什麼是MVC期貨圖書館?
- 28. 什麼是混淆圖書館?
- 29. 爲什麼快速排序被認爲是最快的排序算法?
- 30. 你最喜歡的Ruby on Rails書籍是什麼?爲什麼?