コード例 #1
0
 public void TransferToBiggerArray_copies_contents_of_original_to_new_array()
 {
     int[] original = new int[] { 1, 2, 3 };
     int[] expanded = DotNetHeapUtils.TransferToBiggerArray(original);
     Assert.Equal(1, expanded[0]);
     Assert.Equal(2, expanded[1]);
     Assert.Equal(3, expanded[2]);
 }
コード例 #2
0
        public void TransferToBiggerArray_allows_custom_expansion_size()
        {
            int[] original       = new int[] { 1, 2, 3 };
            int   additionalSize = 1;

            int[] expanded = DotNetHeapUtils.TransferToBiggerArray(original, additionalSize);
            Assert.Equal(expanded.Length, original.Length + additionalSize);
        }
コード例 #3
0
        public void TransferToBiggerArray_null_or_empty_original_returns_default_size_array()
        {
            int[] original = null;
            int[] list     = DotNetHeapUtils.TransferToBiggerArray(original);
            Assert.NotNull(list);
            Assert.Equal(DotNetHeapUtils.HEAP_DEFAULT_SIZE, list.Length);

            original = new int[0];
            list     = DotNetHeapUtils.TransferToBiggerArray(original);
            Assert.NotNull(list);
            Assert.Equal(DotNetHeapUtils.HEAP_DEFAULT_SIZE, list.Length);
        }
コード例 #4
0
ファイル: DotNetHeap.cs プロジェクト: amirkour/DotNetHeap
        public DotNetHeap <T> Enqueue(T thing)
        {
            if (_numElements + 1 == _queue.Length)
            {
                _queue = DotNetHeapUtils.TransferToBiggerArray(_queue);
            }

            _queue[++_numElements] = thing;
            int i = _numElements;

            while (i > 1 && i / 2 >= 1) // && )
            {
                if ((_heapType == HEAP_TYPE.MAX && _queue[i].CompareTo(_queue[i / 2]) > 0) ||
                    (_heapType == HEAP_TYPE.MIN && _queue[i].CompareTo(_queue[i / 2]) < 0))
                {
                    _queue.Swap(i, i / 2);
                }

                i /= 2;
            }

            return(this);
        }