ToEnumerable() { SpanHeap.Make <TValue, TExtractor, TKey, TComparer>( ToBeSorted, _extractor, _comparer); return(new SpanEnumerable <TValue, TValue, OrderingProducer <TValue, TKey, TComparer, TExtractor> >( ToBeSorted, new OrderingProducer <TValue, TKey, TComparer, TExtractor>( _extractor, _comparer), length: ToBeSorted.Length)); }
private Span <TValue> RealProduce(Span <TValue> input, Span <TValue> output) { var count = Math.Min(input.Length, output.Length); for (var i = 0; i < count; ++i) { output[i] = SpanHeap.ExtractMin <TValue, TExtractor, TKey, TComparer>( ref input, _extractor, _comparer); } return(output.Slice(0, count)); }