我有一個任務,可以編寫一個算法來查找動態排序數組中的重複項。我想寫這個算法,但在開始之前,我必須知道數據結構Dynamic Sorted Array,但我不知道它。我試圖用Google搜索,但找不到像Dynamic Sorted Array這樣的東西。你能指導我嗎?這是什麼數據結構以及它的外觀如何?謝謝。有助於瞭解數據結構
回答
讓我們來看看,你需要了解一個動態有序數組是什麼:
你已經知道了一個有序數組是什麼,所以讓我們嘗試瞭解dynamic array是什麼:這是一個成長能夠數組,其中沒有限制陣列的大小。
因此,要總結,你需要寫一個數組是:
A.排序
B.動態的性質(擴大)
如何實現?閱讀Dynamic arrays overview and implementation in Java and C++
我認爲這意味着一個數組的長度是動態的(即在編譯時是未知的),並且其值被排序。
我認爲你的老師只是指一個可以改變和排序的數組,所以你可以假定它總是按照正確的順序,並且它的長度是可變的。如果算法是用僞代碼編寫的,那麼你可能需要知道所有這些。
我從來沒有聽說過的數據結構,而是基於個人的話我會猜測它:
- 行爲就像一個數組,即用O(1)訪問操作
get(index)
和set(index)
。 - 如果需要,可以調整大小。
- 總是排序。
我不認爲這樣的數據結構是非常有效的查找重複。我更喜歡某種地圖,除非你需要非常簡單的算法。
爲什麼效率不高?一個地圖不允許重複,所以是的,這將是在返回0時最有效的。如果你的意思是使用它作爲中介來確定/找到重複,那麼是的,一個地圖將非常適合。 – nlucaroni 2010-11-16 21:16:40
我將原始問題解釋爲*實現一個函數findAllDuplicates *。對於需要O(N)時間的簡單的基於陣列的實現。因此,我更喜歡基於地圖的方法,這種查找只需要一定的時間。基本思想是有兩個內部集合「計數
我會說你可能在你的任務中有一個錯字。它可能應該讀取「排序的動態數組」。
但是,總是按排序順序插入新項目的動態數組可能適合該術語。因此,需要動態數組:
[2] [5] [7] [9]
插入元件 '8' 將導致下面的陣列中:
[2] [5] [ 7] [8] [9]
- 1. MySQL數據庫結構有助於
- 2. 數據結構幫助 - 瞭解思維過程
- 3. 有助於瞭解magic_quotes_gpc的()
- 4. 有助於瞭解XPath的
- 5. 需要幫助瞭解結構用C
- 6. 瞭解perl中的數據結構
- 7. C結構圖,幫助理解結構
- 8. 瞭解XML結構
- 9. 瞭解sass結構
- 10. Python代碼有助於瞭解
- 11. 星號有助於瞭解發短信
- 12. 有助於瞭解在Linux中Makefile.in
- 13. 瞭解Drupal-6數據庫中的數據結構
- 14. 有助於理解Python的類層次結構?
- 15. C#以JSON結構有助於
- 16. 幫助理解typedef結構
- 17. 我需要幫助想了解這段代碼關於結構和指針
- 18. 瞭解計數草圖數據結構和相關算法
- 19. c瞭解結構指針
- 20. 瞭解Websphere內部結構
- 21. 瞭解EXE內部結構
- 22. MVC體系結構瞭解
- 23. 瞭解Firefox擴展結構
- 24. 瞭解node.js回調結構
- 25. 瞭解Mp3文件結構
- 26. 結構 - 瞭解代碼
- 27. 無法瞭解結構
- 28. 瞭解adventureworks2012 DB結構
- 29. 瞭解服務器結構
- 30. 瞭解C++結構語法
是不是隻是一個自我排序的元素列表? – cdhowie 2010-11-16 20:48:23