Отсортировать диагональные элементы массива по убыванию (методом выбора) - C (СИ)

Узнай цену своей работы

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

В задании просят:

Отсортировать диагональные элементы массива по убыванию (методом выбора)

. Пытаюсь реализовать с помощью приведённого кода. Элементы побочной диагонали сортирует гуд. Остальные переворачивает по зеркальному принципу. Не могу сообразить, как переделать цикл, чтобы правильно сортировать все диагональные элементы. Хелп! Наставьте на путь истинный!
int tmp, n, m;
for(i=0;i<N;i++)
  {for(j=0;j<M;j++)
     {for(n=i+1; n<N; n++)
        {for(m=j+1; m<M; m++)
        if(array[i][j]<array[n][m])
        {  tmp=array[i][j];
           array[i][j]=array[n][m];
           array[n][m]=tmp;
        }}}}

Решение задачи: «Отсортировать диагональные элементы массива по убыванию (методом выбора)»

textual
Листинг программы
void selection(int *a, int len) {
 
    /* внешний цикл. i – позиция первого неотсортированного элемента на данной итерации */
    for (int i = 0; i < len - 1; i++) {
        int min = i; /* min – позиция минимального элемента */
 
        /* внутренний цикл. если найден элемент строго меньший текущего минимального, записываем его индекс как минимальный */
        for(int j = i + 1; j < len; j++) {
            if(a[j] < a[min])
                min = j;
        }
        if(min != i) /* минимальный элемент не является первым неотсортированным, обмен нужен */
            exch(a[i], a[min]);
    }
}

Объяснение кода листинга программы

  1. Первый шаг - это инициализация переменной min значением i, что означает, что на первой итерации внутреннего цикла, текущий минимальный элемент - это элемент с индексом i.
  2. Затем следует внешний цикл, который начинается с i = 0 и продолжается до len - 1. Это означает, что на каждой итерации внешнего цикла будет обрабатываться новый неотсортированный блок массива.
  3. На каждой итерации внешнего цикла, внутренний цикл ищет элемент, который меньше текущего минимального значения. Если такой элемент найден, его индекс записывается в переменную min.
  4. После завершения внутреннего цикла, проверяется, был ли найден элемент, меньший текущего минимального значения. Если да, и min не равно i, то происходит обмен элементов с индексами i и min.
  5. После завершения внешнего цикла, массив будет отсортирован по убыванию.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5
Похожие ответы