Одномерные массивы, сортировка - C#

Формулировка задачи:

Из последовательности целых чисел вывести в порядке возрастания все числа, стоящие на чётных местах и встречающиеся более двух раз. Я попытался определить элементы встречающиеся в последовательности более двух раз. Но где-то есть ошибка, так как программа выводит только число 22, хотя есть и число 5, встречающееся более двух раз. В то же время записываю в masLenght количество, встречающихся элементов в последовательности более двух раз и элементы стоящие в четных местах. Это для того чтобы создать новый массив с определенным количеством элементов masLenght , и добавить туда эти элементы после чего их отсортировать. Но на сколько я понимаю это очень затяжной и наитупейший подход к решению задачи. Подскажите пожалуйста как все-таки решить задачку, только без применения ArrayList. Ну а если иначе никак, то и с ним можно.
            Console.Write("Данный массив: ");
            int[] mas = { 22, 5, 9, 0, 22, -6, 5, 3, 22, 8,-34, 11, 5 };
            int count = 1, masLenght = 0;
            for (int i = 0; i < mas.Length; i++)
                Console.Write(mas[i] + " ");
            Console.WriteLine();
 
            for( int h = 0; h < mas.Length; h++)
            {
                for (int f = h+1; f < mas.Length; f++)
                {
 
                    if (mas[h] == mas[f])
                    {
                        count++;
                    }
                }
 
                if(count > 2)
                {
                    Console.WriteLine("Встречается более двух раз: "+ mas[h]);
                    masLenght++;
                }
                count = 1;
 
                if(h++ % 2 == 0)
                {
                   // Console.WriteLine("Элемент стоит на четном месте: " + mas[h]);
                    masLenght++;
                   
                }
            }
 
            Console.WriteLine("Кол во элементов: " + masLenght);

Код к задаче: «Одномерные массивы, сортировка - C#»

textual
        static void Add(ref int[] n2, int a)
        {
            if (Array.IndexOf(n2, a) >= 0) return;
            Array.Resize(ref n2, n2.Length + 1);
            n2[n2.Length - 1] = a;
        }
        static void Main(string[] args)
        {
            int[] mas = { 22, 5, 9, 0, 22, -6, 5, 3, 22, 8, -34, 11, 5 };
            int[] was = new int[mas.Length];
            int[] n2 = new int[0];
            Console.WriteLine("Данный массив:");
            for (int i = 0; i < mas.Length; i++)
            {
                Console.Write(mas[i] + " ");
                was[i] = 0;
            }
            Console.WriteLine();
            for (int i = 0; i < mas.Length - 2; i++)
                if (was[i] == 0) 
                {
                    if (i % 2 == 1) Add(ref n2, mas[i]);
                    int n = 0;
                    for (int j = i; j < mas.Length; j++)
                        if (mas[i] == mas[j])
                        {
                            n++;
                            was[j] = 1;
                        }
                    if (n > 2) Add(ref n2, mas[i]);
                }
            Array.Sort(n2);
            foreach (int i in n2)
                Console.Write(i + " ");
            Console.WriteLine();
            Console.ReadKey(true);
        }

7   голосов, оценка 4.143 из 5


СОХРАНИТЬ ССЫЛКУ