passing predicates to lowerBound, or alternatively, how lazy is map?

John Colvin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 11 05:43:10 PDT 2014


On Wednesday, 11 June 2014 at 11:38:07 UTC, Andrew Brown wrote:
>>>
>>> My question about this is how lazy is map? Will it work on 
>>> every value of order and then pass it to lowerBound, or could 
>>> it work to evaluate only those values asked by lowerBound? I 
>>> guess probably not, but could a function be composed that 
>>> worked in this way?
>>>
>>> Thank you very much
>>>
>>> Andrew
>>
>> map is fully lazy.
>>
>> However, if you've already got the sorted indices in `order`, 
>> I would do this:
>>
>> auto numLessThanN = numbers.indexed(order).countUntil!((x) => x
>> >= N)();
>
> Thanks for the reply, I'm going to have a lot of numbers 
> though. I guess compared to the time it will take me to sort 
> them, it makes no difference, but is it right that countUntil 
> will take linear time? If I can figure out lowerBound, then I 
> have my answer in log(n) time?
>
> Best
>
> Andrew

You are correct. assumeSorted and lowerBound will provide better 
time complexity than countUntil


More information about the Digitalmars-d-learn mailing list