почему последние три элемента неправильно сортируются, повторяются?

Рейтинг: -1Ответов: 1Опубликовано: 08.07.2023
static void Main(string[] args)
        {
            int[] numbers = new int[] { 14, 54, 31, 11, 78, 55, 44, 99, 23, 22 };
            int[] newNumbers = new int[numbers.Length];
            int size = numbers.Length;

            for (int i = 0; i < numbers.Length; i++)
            {
                newNumbers[i] = RemoveNumbers(numbers, ref size);
            }
            for (int i = 0; i < numbers.Length; i++)
            {
                Console.Write(newNumbers[i] + " ");
            }
        }

        public static int RemoveNumbers(int[] numbers, ref int size)
        {

            int i;
            int max = numbers.Max();

            //Находим индекс максимального числа
            for (i = 0; i < size; i++)
            {
                if (numbers[i] == max)
                    break;
            }
            //убираем максимальное число сдвигом
            for (int j = i; j <= size; j++)
            {
                if (j+1 < size)
                    numbers[j] = numbers[j + 1];
                
            }
            //уменьшаем размер массива
            size--;

            return max;
        }

Ответы

▲ 0Принят

Вот где собака порылась:

int max = numbers.Max();

максимум нужно искать в части длиной size, это проще сделать своим циклом, т.к индекс всё равно нужен.