findNearest method
Find nearest element index
Implementation
dynamic findNearest(T element, List<T> array, bool exact) {
var diff = 0;
var start = 0;
var pivot = 0;
var found = false;
var end = array.length - 1;
while (start <= end) {
pivot = ((start + end) / 2).roundToDouble().toInt();
diff = compare(array[pivot], element);
if (diff < 0) {
start = pivot + 1;
} else if (diff > 0) {
end = pivot - 1;
} else {
found = true;
break;
}
}
if (found) {
return {'idx': pivot, 'exact': true};
}
if (exact) {
return {'idx': -1};
}
// Not exact - insertion point
return {'idx': diff < 0 ? pivot + 1 : pivot};
}