我有兩個數組。 Array1擁有醫學術語,而array2則擁有簡單的英語術語。醫學術語數組中有一些非醫學英語單詞(它們在數組1中重複)。這些在array1中是20,000,在array2中是超過15000。比較兩個數組並使用delphi從array1中刪除重複單詞的最快方法是什麼?如何比較delphi中的兩個數組,並從一箇中刪除重複
0
A
回答
2
如果數組未經排序,則此方法更快: 1.將來自array2的所有單詞填入字典中。 2.運行array1,查找字典中的每個單詞,如果找到則將其刪除。
步驟1和2都需要O(n)時間。
如果你有一箇舊版本的delphi,你將不得不使用一個字典類,比如你的delphi安裝的MemIni.Pas文件中的THashedStringList。它退化爲非常大的N,但對於20.000個條目,它仍然非常快。
能夠在O(1)中存儲和查找數百萬字符串中的100個的非常快的實現可以在here中找到。該文章是德文,但代碼是英文和可以理解的。
2
如果你的數組排序時候,記住兩pointers-- p1
和p2
到array1
和array2
resply。初始化爲 它們指向array1
和array2
的第一個元素。
對於array1
中的每個條目,從第一個開始,查看它是否是數組array2 [p2]。 如果是這樣,只需從array1
中刪除它。如果不是, 增量p2
直到
((array1[p1] >= array2[p2]) and (array1[p1] < array2[p2+1])),
刪除array1[p1]
如果你發現一個打擊。
需要O(n)
時間。 O(nlogn)
時間有排序算法。
相關問題
- 1. PHP - 如何比較兩個數組並刪除重複的值
- 2. 比較兩個數組的數組,並刪除重複在php
- 3. 如何比較兩個表並刪除SQL中的重複行?
- 4. 如何比較兩個對象數組來刪除重複項?
- 5. 如何比較兩個數組,並從兩個數組中不匹配的數組中刪除多個項目?
- 6. KnockOut.JS比較兩個數組並從第二個數組中刪除唯一值
- 7. PHP - 如何比較兩個數組並刪除重複值區分大小寫
- 8. 如何從Java中的兩個數組中刪除重複對?
- 9. 如何從兩個數組中刪除重複的字符串?
- 10. 如何比較兩個對象數組中的重複javascript
- 11. 比較數組中的條目並刪除重複項(PHP,MySQL)
- 12. 如何從兩個數組中刪除重複對?
- 13. 比較excel中的兩個列表並刪除非java中的重複項
- 14. 比較兩個陣列並刪除重複項
- 15. 比較兩個數組和原數組的Java刪除重複(沒有列出)
- 16. Python - 如何比較多個字典並刪除重複的值?
- 17. 從數組中刪除重複項,並增加一個值
- 18. LINQ並從一個對象數組中刪除重複項
- 19. 如何比較兩個數組並從下一個循環中刪除匹配的元素?
- 20. 比較兩個文本文件,以刪除較長的一個重複
- 21. 比較兩個數組並刪除不匹配的對象
- 22. 比較兩個陣列和從數組中刪除數組中PHP
- 23. 如何使用兩個鍵刪除數組中的重複項?
- 24. 比較在Excel中兩列並刪除重複
- 25. LINQ比較兩個列表並刪除
- 26. 比較2個文件並刪除重複行只有一次
- 27. 比較兩個數組並刪除 - PHP ARRAY
- 28. Angular2比較兩個數組和對象並刪除
- 29. 比較兩個不同的工作表中的兩個單元格並刪除任何重複的內容
- 30. JS:比較數組的對象,並刪除重複