Q
搜索數組
0
A
回答
8
這是一個僞代碼,這應該工作。只有n個內存讀取。
buff1 = x[0]
buff2 = 0
for i = 1 to n - 1
buff2 = x[i]
if (buff1 + buff2) == number
then
MATCH
endif
buff1 = buff2
endfor
1
如果數組未經排序且您只進行少量搜索,則使用phoxis的方法。預計運行在O(n * k)中,其中n是x的大小,k是您想要創建的搜索數量。
如果對數組排序,我們知道x [i] < = number/2且x [i + 1]> = number/2。使用binary search找到(最後一個)前輩編號/ 2 + 1,並檢查是否匹配。
int i = binaryPredecessor(x , number/2 + 1);
if(x[i] + x[i+1] == number){
return i;
}
else if(x[i-1] + x[i] == number){
//The case where x[i] == number/2, and we found the last of two occurrences
return i-1;
} else {
//No match exists
return -1;
}
運行時間爲O(log(n)* k)。
如果您進行了大量搜索,則可能需要對數組進行排序,並使用上述方法。該數組可以按O(n * log(n))排序[見mergersort]。所以如果你想做更多的log(n)搜索,那麼排序數組是值得的。 (如果k接近log(n),做一些測試,看什麼最好:))
相關問題
- 1. 搜索數組
- 2. 搜索數組
- 3. 搜索在數組的數組索引
- 4. MongoDB數組索引搜索
- 5. Mongoid:搜索數組
- 6. 搜索數組值
- 7. JavaScript數組搜索
- 8. php數組搜索
- 9. 搜索數組Android
- 10. 搜索NSManagedObjects數組
- 11. PHP - 搜索數組
- 12. 搜索數組值
- 13. PHP數組搜索
- 14. 搜索整數數組
- 15. 搜索數組的函數
- 16. 如何用數組搜索數組?
- 17. foreach數組比搜索其他數組
- 18. Lua:搜索詞 - 數組內的數組
- 19. 搜索數組並返回數組
- 20. 搜索數組內的數組
- 21. 在numpy數組內搜索numpy數組
- 22. 搜索類型數組的數組
- 23. 在數組中搜索Postgres數組
- 24. Javascript:搜索數組中的數組
- 25. PHP - 在數組中搜索數組
- 26. 在數組內搜索數組
- 27. 在數組中搜索
- 28. 字符串搜索數組
- 29. Php多數組搜索
- 30. 搜索關聯數組
爲什麼不去ArrayList? – u449355 2011-05-08 04:43:54
是你的數組排序? – MByD 2011-05-08 04:45:58
這聽起來像是一項家庭作業。如果是這樣,你應該這樣標記它。 – Pace 2011-05-08 04:51:27