I need to write some code for linear interpolation and I am trying to figure out the most efficient way to search the Keys of a SortedList<K, V>
for the upper and lower keys that surround my target key.
SortedList<int, double> xyTable = new SortedList<int, double>()
{
{1, 10}, {2, 20}, {3, 30}, {4,40}
};
double targetX = 3.5;
What is the most efficient way to search the list and determine that 3.5 is between 3 and 4? I have a method / cheat that works for integers (temporarily insert the target Key into the list then find the index) but I figured I'd ask the pros so I could produce quality code.
Thanks.
A binary search gives you decent performance on a list. However the Keys property on SortedList
is of type IList
, whereas BinarySearch
is defined on List
. Fortunately, you can find an implementation of binary search for IList
in this related question: