static void Main(string[] args) { //Initialise a heap to some size int sizeOfHeap = 10; BinaryHeap <int> sampleHeap; sampleHeap = new BinaryHeap <int>(sizeOfHeap); //populate a heap for (int i = 0; i < sizeOfHeap; i++) { sampleHeap.AddItem(i); } //This line shows how to use comparison, element 5 is less than element 6 and returns -1 Console.WriteLine(sampleHeap.GetItem(5).CompareTo(sampleHeap.GetItem(6))); //Print each element in the heap Console.Write("Useless Linear Heap: "); foreach (int i in sampleHeap) { Console.Write(i + " "); } Console.WriteLine(); BinaryHeap <int> sampleHeap2; sampleHeap2 = new BinaryHeap <int>(9); sampleHeap2.AddItem(1); sampleHeap2.AddItem(3); sampleHeap2.AddItem(36); sampleHeap2.AddItem(2); sampleHeap2.AddItem(19); sampleHeap2.AddItem(25); sampleHeap2.AddItem(100); sampleHeap2.AddItem(17); sampleHeap2.AddItem(7); // sampleHeap2.MinHeapify(0); foreach (int i in sampleHeap2) { Console.WriteLine(i); } Console.ReadLine(); }
static void Main(string[] args) { int n = 10; Random rd = new Random(); Queue <double> goodsWeight = new Queue <double>(); // веса товаров goodsWeight.Enqueue(0.6); goodsWeight.Enqueue(0.3); goodsWeight.Enqueue(0.4); goodsWeight.Enqueue(0.7); //for (int i = 0; i < n; i++) // goodsWeight.Enqueue(Math.Round(rd.NextDouble(), 3)); Console.Write("Weights on conveyor: "); foreach (var oneWeight in goodsWeight) { Console.Write(" {0} |", oneWeight); } BinaryHeap <double> boxes = new BinaryHeap <double>(); // коробки для упаковки boxes.Add(goodsWeight.Dequeue()); // + проверка на отсутствие товара while (goodsWeight.Count > 0) { var oneWeight = goodsWeight.Dequeue(); var buffer = new List <double>(); // буфер для хранения извлеченных максимумов кучи while (boxes.Count > 0) { var oneBox = boxes.Pop(); // если вес товара умещается в коробку, то... if (oneBox + oneWeight <= 1) { // добавляем коробку с новым весом, вместо извлеченной boxes.Add(oneBox + oneWeight); break; } // иначе... else { // запоминаем какой вес вытащили buffer.Add(oneBox); } } // если подходящая коробка не найдена, то... if (boxes.Count == 0) { // добавляем новую boxes.Add(oneWeight); } // добавляем все веса, которые запомнили foreach (var el in buffer) { boxes.Add(el); } } Console.Write("\nPackaging in {0} boxes completed: ", boxes.Count); foreach (var box in boxes.Elements()) { Console.Write(" {0} |", box); } }