//entry point public static void Main(string[] args) { //linear Queue Console.WriteLine("Linear queue: "); var q = new LinearQueue(6); Console.WriteLine("is empty = " + q.isEmpty().ToString()); q.enQueue("orange"); q.enQueue("red"); q.enQueue("blue"); q.enQueue("orange"); q.enQueue("red"); q.enQueue("blue"); q.show(); Console.WriteLine(q.isFull().ToString()); q.deQueue(); q.show(); Console.WriteLine(q.isFull().ToString()); //circular queue Console.WriteLine("\n\nCircular Queue"); var q2 = new CircularQueue(4); Console.WriteLine("is empty = " + q2.isEmpty().ToString()); q2.enQueue("orange"); q2.enQueue("red"); q2.show(); q2.deQueue(); q2.show(); q2.enQueue("red"); q2.enQueue("blue"); q2.enQueue("orange"); q2.enQueue("orange"); q2.show(); //stack Console.WriteLine("\n\nStack"); var s = new Stack(5); Console.WriteLine("is empty: " + s.isEmpty().ToString()); s.push("red"); s.push("green"); s.push("Blue"); s.show(); s.peek(false); s.pop(); s.push("Orange"); s.push("Indigo"); s.push("Violet"); Console.WriteLine("\nis full: " + s.isFull().ToString()); s.show(); }
static void Main(string[] args) { LinearQueue[] linear = new LinearQueue[ARRAY_SIZE]; Random r = new Random(); int number = 0; int i = 0; while (i < ARRAY_SIZE * LIST_SIZE) { number = r.Next(0, 10); linear[number].Queue(number); } for (int j = 0; j < ARRAY_SIZE; j++) { Console.WriteLine(linear[j].Count); } Console.ReadKey(); }
public static IEnumerable <double> AverageMedian(this IEnumerable <double> samples, int WindowLength) { if (samples is null) { throw new ArgumentNullException(nameof(samples)); } switch (WindowLength) { case < 1: throw new ArgumentOutOfRangeException(nameof(WindowLength), WindowLength, "Длина окна должна быть больше 0"); case 1: { foreach (var sample in samples) { yield return(sample); } yield break; } } var buffer = new double[WindowLength]; // Отсортированный буфер для вычисления медианы var is_even = WindowLength % 2 == 0; // Длина буфера является чётной var length05 = WindowLength / 2; // Индекс середины в буфере // Создаём циклическую очередь для определения последнего элемента в буфере var queue = new LinearQueue <double>(WindowLength); var element = samples.GetEnumerator(); try { if (!element.MoveNext()) { yield break; } var x = element.Current; buffer[0] = x; queue.Add(buffer[0]); yield return(buffer[0]); if (!element.MoveNext()) { yield break; } // Заполняем буфер for (var i = 1; i < WindowLength; i++) { x = element.Current; queue.Add(x); var j = 0; while (j < i && buffer[j] <= x) { j++; } if (j == i) { buffer[i] = x; } else { var tmp = buffer[j]; buffer[j] = x; while (j < i - 1) { j++; (buffer[j], tmp) = (tmp, buffer[j]);