Задать вопрос
@roflanPominki

У меня есть массив чисел. Мне нужно отсортировать нечетные числа в порядке возрастания, оставив четные числа на их исходных позициях?

Честно не понимаю в чем проблема, так как у меня при выводе пол массива забито нулями, задание очень легкое поэтому мне кажется что просто кода будет достаточно чтобы выявить ошибку.
static int[] SortArray(int[] array)
        {
            var result = new int[array.Length];
            int count = 0;
            for (int i = 0; i < array.Length; i++)
            {
                if ((array[i] & 1) != 0)
                {
                    array[i] = result[count];
                    count++;
                }
            }
            Array.Sort(result);
            int temp;

            for (int i = 0; i < array.Length-1; i++)
            {
                if ((array[i] % 1)==0)
                {
                    temp = result[i];
                    result[i] = array[i];
                    result[i + 1] = temp;
                }
            }
            return result;
        }
  • Вопрос задан
  • 4247 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
edward_freedom
@edward_freedom
Обычная пузырьковая сортировка
var array = new[] { 55, 2, 9, 99, 12, 13, 23, 32, 5, 11, 1 };

            for (var first = 0; first < array.Length; first++)
            {
                for (var second = first; second < array.Length; second++)
                {
                    if (array[first] % 2 == 1 && array[second] % 2 == 1 && array[first] > array[second])
                    {
                        var temp = array[first];
                        array[first] = array[second];
                        array[second] = temp;
                    }
                }
            }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sarapinit
@sarapinit Куратор тега C#
Точу водой камень
Как минимум вот это всегда истинноif ((array[i] % 1)==0)
Нужно использовать остаток от деления на 2 ))
Он будет 0 для четных и 1 для нечетных
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы