Отсортировать все столбцы матрицы методом выбора - C (СИ)

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

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

Задание: Имеется двумерный массив случайных чисел размерностью NxN, где N = 9. Отсортировать все столбцы методом выбора так, чтобы элементы в них располагались по возрастанию. Проблема: Не могу сделать чтоб сортировались именно столбы. Кому не трудно, прошу помочь. Вот заготовка программы с формированием массива случайных чисел и выводом несортированного и сортированного массивов.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define N 9
int main()
{
    int i, j, rnd, r_min=0, r_max=50;
    int array[N][N];
    srand((unsigned)time(NULL));
    printf("Unsorted array:\n");
    for(i=0; i<N; i++)  //формирование массива из случайных чисел
    {               
        for(j=0; j<N; j++)
        {
        rnd=(((double)rand()/(double)RAND_MAX)*(r_max-r_min)+r_min);
        array[i][j]=rnd;
        printf("%d\t",array[i][j]); 
        }
        printf("\n");
    }
    printf("\nSorted array:\n");

    for(i=0; i<N; i++)  // вывод преобразованного массива на экран
    {               
        for(j=0; j<N; j++ )
        {
        printf("%d\t",array[i][j]); 
        }
    printf("\n");
    }
}

Решение задачи: «Отсортировать все столбцы матрицы методом выбора»

textual
Листинг программы
int min, mini, k;
       for(j=0; j<N; j++)
            for(i=0; i<N; i++)
                {
                    min = array[i][j];
                    mini = i;
                    for(k=i+1; k<N; k++)
                        if (min>array[k][j]) {min = array[k][j]; mini = k;}
 
                    array[mini][j] = array[i][j];
                    array[i][j] = min;
                }

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

В этом коде выполняется сортировка всех столбцов матрицы методом выбора.

  1. В первой строке объявляются три переменные: — min — для хранения минимального элемента в текущем столбце; — mini — для хранения индекса строки, содержащей минимальный элемент; — k — для использования в цикле.
  2. В следующей строке два вложенных цикла организовывают перебор всех элементов матрицы: — внешний цикл по строкам матрицы (j); — внутренний цикл по столбцам матрицы (i).
  3. Внутри вложенных циклов: — min присваивается значение текущего элемента матрицы; — mini присваивается значение i; — k инициализируется значением i+1 и используется для проверки всех последующих элементов в текущем столбце.
  4. Если найден элемент, меньший min, то он становится новым min, а его индекс — новым mini.
  5. Затем выполняется обмен элементов: — элемент с индексом mini в текущем столбце заменяется на элемент с индексом i; — элемент с индексом i в текущем столбце заменяется на min. После завершения циклов, матрица будет отсортирована по столбцам.

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


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

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

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