bisectionTransformXToIndex method
二分查找法
Implementation
int bisectionTransformXToIndex(double x, int start, int end) {
if (end == start || end == -1) {
return start;
}
if (end - start == 1) {
double startValue = indexToX(start);
double endValue = indexToX(end);
return (x - startValue).abs() < (x - endValue).abs() ? start : end;
}
int mid = start + (end - start) ~/ 2;
double midValue = indexToX(mid);
if (x < midValue) {
return bisectionTransformXToIndex(x, start, mid);
} else if (x > midValue) {
return bisectionTransformXToIndex(x, mid, end);
} else {
return mid;
}
}