我使用二进制搜索来搜索应在我的应用中呈现的行范围。 protected override void OnExit(ExitEventArgs e)
{
base.OnExit(e);
Container.GetContainer().Dispose(); // must be called to dispose singletons
}
具有3个属性:GridRow
,top
和height
,并且行列表已排序。
示例:
我在下一行bottom
和30px
的第一个呼叫rowBinarySearch
中传递了140
,以加快搜索速度。我返回firstIndex
以了解数组最后一行的固定可见性:
lastIndex + 1
搜索功能实现:
const firstIndex = rowBinarySearch(rows, 30);
const lastIndex = rowBinarySearch(rows, 140, firstIndex);
return range.slice(firstIndex, lastIndex + 1);
预期的行为:
1.删除上面评论列表中评论的hacky返回
2.找到第一行,该行的function rowBinarySearch(arr: GridRow[], val: number, start = 0, end = arr.length - 1): number {
const mid = Math.floor((start + end) / 2);
if (mid < 0)
return 0;
if (val === arr[mid].top)
return mid;
if (start >= end)
return mid; // original version should return -1 if element dont exist
return val < arr[mid].top
? rowBinarySearch(arr, val, start, mid - 1)
: rowBinarySearch(arr, val, mid + 1, end);
}
值低于搜索值
3.如果不应该将top
增加lastIndex
感谢您的帮助:)