1
A
回答
4
您可以使用List<T>
或Array
的默認BinarySearch
方法,但是如果沒有找到完全匹配,如何得到最接近的元素的索引並不是非常明顯。對於您需要做的是這樣的:
var list = new float[] { 0, 1, 2, 3, 4, 5 };
var idx = Array.BinarySearch(list, 3.3f);
if (idx < 0)
idx = ~idx;
如果沒有直接找到匹配,方法返回負數其中,運用〜運營商之後,給你下一個項目的指數比你搜索什麼大對於。在你的情況下,這將是「4」,所以索引是「4」。爲了得到最接近的項目比你搜索的要小 - 只需減1(注意索引可以變成-1然後等於數組邊界之外)。還要注意,如果目標元素大於數組中的所有元素 - 它(在應用〜運算符後)將返回數組邊界外的索引(索引等於數組長度)。還要注意array \ list必須已經排序 - 這些方法不會爲你排序。
相關問題
- 1. 如何在二維排序數組中找到中值?例如
- 2. 如何從排序的數組中找到最大的元素?
- 3. 找到沒有排序的未排序數組的位數
- 4. 在MIPS中查找數組的中點 - 合併排序
- 5. 在O(n)中查找排序數組中的插入點?
- 6. 如何找到排序數組的模式?
- 7. 找到bash中排序數組中數字的最小差異
- 8. 如何對數組中的浮點數進行排序?
- 9. 在排序的連續數組中找到丟失的數字
- 10. 如何排序在PHP關聯數組,然後找到結果
- 11. 找到排序數組中的一對整數,總和爲K
- 12. 在排序數組中找到缺失的數字
- 13. 在兩個排序數組中找到丟失的數字
- 14. GLIb數組排序,如何排序?
- 15. 如何查找排序數組中索引的偏移量
- 16. 如何排序數組中的值
- 17. 在排序數組中查找旋轉點
- 18. 將GameObject從數組中排序到空間中的參考點
- 19. 如何在java中找到中位數的快速排序
- 20. 如何在數組中找到數組?
- 21. 在未排序數組中查找值
- 22. 如何排序數組
- 23. 將排序後的數組插入到二叉查找樹中
- 24. 在排序數組中找到小於x的最大值
- 25. 如何重新排序的數組在Java中未排序?
- 26. 如何找到與java整數數組的排列
- 27. 如何在JavaScript中對浮點數組進行排序?
- 28. 如何在Ruby中對浮點數組進行排序?
- 29. 最有效的方法來排序2d數組排序到1d排序數組
- 30. 如何找到任何整數值的排列和組合?
因爲數組已排序,所以可以執行二分搜索。這裏的訣竅是首先「發佈」()該數字。 –
順便說一句,Array和List都有BinarySearch方法。 –
Evk