二进制搜索-多个搜索值

时间:2020-05-08 07:14:35

标签: javascript arrays typescript algorithm binary-search

我使用二进制搜索来搜索应在我的应用中呈现的行范围。 protected override void OnExit(ExitEventArgs e) { base.OnExit(e); Container.GetContainer().Dispose(); // must be called to dispose singletons } 具有3个属性:GridRowtopheight,并且行列表已排序。

示例:

我在下一行bottom30px的第一个呼叫rowBinarySearch中传递了140,以加快搜索速度。我返回firstIndex以了解数组最后一行的固定可见性:

lastIndex + 1

diagram

搜索功能实现:

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

,我会很高兴

感谢您的帮助:)

0 个答案:

没有答案
相关问题