我有一个大约20K项目的排序列表v.我想在第一个v [i]> K的点处将其拆分为2个列表
N:20000;
v:asc N?100000; / N random numbers sorted
K:200; / threshold
v1:v[where v<=K]; / "v<=K" has O(N) complexity, "where" has O(N) too
v2:(count v1) _ v; / list is sorted, this holds.
Run Code Online (Sandbox Code Playgroud)
问题:如何避免v <= 200,所以它不计算长度为N的整个中间布尔向量,换句话说,在第一次匹配后找不到值?我实际上需要一个索引来执行拆分.假设K靠近列表的开头.
这是与绩效相关的问题.(注意忽略在"asc"上花费的时间.)