Отсортировать все столбцы матрицы методом выбора - 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; }
Объяснение кода листинга программы
В этом коде выполняется сортировка всех столбцов матрицы методом выбора.
- В первой строке объявляются три переменные: — min — для хранения минимального элемента в текущем столбце; — mini — для хранения индекса строки, содержащей минимальный элемент; — k — для использования в цикле.
- В следующей строке два вложенных цикла организовывают перебор всех элементов матрицы: — внешний цикл по строкам матрицы (j); — внутренний цикл по столбцам матрицы (i).
- Внутри вложенных циклов: — min присваивается значение текущего элемента матрицы; — mini присваивается значение i; — k инициализируется значением i+1 и используется для проверки всех последующих элементов в текущем столбце.
- Если найден элемент, меньший min, то он становится новым min, а его индекс — новым mini.
- Затем выполняется обмен элементов: — элемент с индексом mini в текущем столбце заменяется на элемент с индексом i; — элемент с индексом i в текущем столбце заменяется на min. После завершения циклов, матрица будет отсортирована по столбцам.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д