Exemplo n.º 1
0
        private void WriteUptoPosition(MinHeap <ISupplementaryDataItem> itemsHeap, int position)
        {
            if (position < 1)
            {
                return;
            }
            if (itemsHeap.Count() == 0)
            {
                return;
            }
            var bufferMin = itemsHeap.GetMin();

            while (bufferMin.Position < position)
            {
                var itemsAtMinPosition = new List <ISupplementaryDataItem>();

                while (itemsHeap.Count() > 0 && SuppDataUtilities.CompareTo(bufferMin, itemsHeap.GetMin()) == 0)
                {
                    itemsAtMinPosition.Add(itemsHeap.ExtractMin());
                }

                if (itemsAtMinPosition.Count > 0)
                {
                    _count += itemsAtMinPosition.Count;
                    WritePosition(itemsAtMinPosition);
                }
                if (itemsHeap.Count() == 0)
                {
                    break;
                }

                bufferMin = itemsHeap.GetMin();
            }
        }