/// <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); } }
/// <summary> /// Создает кучу заданного начального размераы /// </summary> /// <param name="capacity"></param> public Heap(IHeapPriorityComparer <T> comparer, int capacity) { _elements = new List <T>(capacity); _comparer = comparer; }
/// <summary> /// Создает кучу /// </summary> public Heap(IHeapPriorityComparer <T> comparer) { _elements = new List <T>(); _comparer = comparer; }