我想找出最好的方法來找到最接近的值ROUNDED DOWN,在整數列表中使用任何n之間的兩個其他數字存儲在列表中。在這種情況下,所有的整數將始終是無符號的,以防萬一。從給定的整數數組中找到最接近的整數值,向下舍入
的假設如下:
- 列表總是在0
- 啓動列表中總是排序ASC
- 列表中的所有整數無符號(無需
Math.Abs
) - 用於比較的數字總是無符號的
例如:
List<int> numbers = new List<int>() { 0, 2000, 4000, 8000, 8500, 9101, 10010 };
int myNumber = 9000;
int theAnswer; // should be 8500
for (int i = 0; i < numbers.Count; i++) {
if (i == numbers.Count - 1) {
theAnswer = numbers[i];
break;
} else if (myNumber < numbers[i + 1]) {
theAnswer = numbers[i];
break;
}
}
前面的代碼示例工作沒有任何瑕疵。
有沒有
更好
更有說服力的方法嗎?
這個問題可能更適合於[代碼審查(http://codereview.stackexchange.com/) – 2015-01-15 17:32:57
您更好的是什麼意思?性能?內存消耗? ...無論如何,嘗試二進制搜索。 – 2015-01-15 17:37:18
如果你正在談論一小堆數字,那麼你在這裏有什麼是好的,我不會花更多的時間在它上面。如果您正在討論任意大小的數字列表,您可能需要執行更高效的搜索以查找myNumber之間的2個數字。 – 2015-01-15 17:37:45