//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();
        }
示例#3
0
    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]);