예제 #1
0
        /// <summary>
        /// Создает кучу на основе данных
        /// </summary>
        /// <param name="elements"></param>
        public Heap(IHeapPriorityComparer <T> comparer, IEnumerable <T> elements)
        {
            /* 1. Просто кладем произвольно в кучу
             * 2. Вызываем Heapefi для всех вершин с хотя бы одним потомком
             * 3. Потомок есть у первых heap_size/2
             */

            _comparer = comparer;
            _elements = elements.ToList();
            for (int i = _elements.Count / 2; i >= 0; i--)
            {
                Heapify(i);
            }
        }
예제 #2
0
 /// <summary>
 /// Создает кучу заданного начального размераы
 /// </summary>
 /// <param name="capacity"></param>
 public Heap(IHeapPriorityComparer <T> comparer, int capacity)
 {
     _elements = new List <T>(capacity);
     _comparer = comparer;
 }
예제 #3
0
 /// <summary>
 /// Создает кучу
 /// </summary>
 public Heap(IHeapPriorityComparer <T> comparer)
 {
     _elements = new List <T>();
     _comparer = comparer;
 }