using System.Collections.Generic;
public static void Main()
var queue = new PrioritisedQueue();
Console.WriteLine("====== Queue one by one ======");
Console.WriteLine("Print:");
Console.WriteLine("Dequeue:");
Console.WriteLine("\t" + queue.Dequeue());
Console.WriteLine("====== Queue range ======");
queue.QueueRange(new int[] { 1,2,9,7,5,3 });
Console.WriteLine("Print:");
Console.WriteLine("Dequeue:");
Console.WriteLine("\t" + queue.Dequeue());
public class PrioritisedQueue
private List<int> values = new List<int>();
public int Count => values.Count;
public void QueueRange(int[] input)
for (int i = values.Count / 2 - 1; i >= 0; i--)
public void Queue(int value)
for (int i = values.Count / 2 - 1; i >= 0; i--)
if (values.Count == 0) return -1;
var last = values.Count - 1;
values[0] = values[last];
for (int i = size / 2 - 1; i >= 0; i--)
Console.WriteLine(string.Join(", ", values));
private void MakeHeap(int i)
if (left < size && values[left] > values[largest])
if (right < size && values[right] > values[largest])
values[i] = values[largest];