Упорядочить массив в порядке возрастания методом стандартного обмена - C (СИ)
Формулировка задачи:
Помогите , пожалуйста , решить задачу...
Дана действительная матрица размерности .
Проверить упорядочены ли элементы столбцов матрицы. Если нет, то упорядочить их в по-рядке возрастания методом стандартного обмена
Решение задачи: «Упорядочить массив в порядке возрастания методом стандартного обмена»
textual
Листинг программы
- #include <stdio.h>
- #define N 4
- void sort_col(float m[N][N], int col){
- int j, i;
- float k;
- //проверить упорядочен ли столбец
- for(j = i = 0; i < (N - 1); ++i){
- if(m[i][col] > m[i + 1][col]){
- j = 1;
- break;
- }
- }
- if(! j)//столбец упорядочен
- return;
- //упорядочить столбец сортировкой вставкой
- for(j = 1; j < N; ++j){
- k = m[j][col];
- i = j - 1;
- while((i >= 0) && (m[i][col] > k)){
- m[i + 1][col] = m[i][col];
- --i;
- }
- m[i + 1][col] = k;
- }
- }
- int main(void){
- int i, j;
- float m[N][N] = {
- { 2.5f, 5.4f, 9.3f, 7.9f },
- { 0.2f, 3.8f, 4.1f, 8.8f },
- { 1.1f, 7.7f, 9.2f, 0.9f },
- { 3.3f, 0.7f, 9.0f, 2.2f }
- };
- for(i = 0; i < N; ++i)
- sort_col(m, i);
- for(i = 0; i < N; ++i){
- for(j = 0; j < N; ++j)
- printf("%.1f ", m[i][j]);
- putchar('\n');
- }
- return 0;
- }
Объяснение кода листинга программы
- Объявление функции sort_col с двумя аргументами типа float m[N][N] и int col, где N это количество строк в массиве.
- Создание переменных j, i, k типа int и float соответственно.
- Проверка упорядоченности столбца методом пузырька, где условие выхода из цикла это наличие элемента больше следующего.
- Если условие не выполняется, то возвращаем управление в основную программу.
- В противном случае начинаем сортировку вставкой для каждой строки начиная со второй.
- Внутренний цикл сортировки вставкой, где условие выхода из цикла это нахождение элемента, который больше текущего.
- Перемещение элементов, которые больше текущего, вправо до тех пор пока не будет найден элемент, который меньше текущего.
- Вставка текущего элемента на свою позицию.
- Повторение шагов 6-8 для каждой строки начиная со второй.
- Вывод отсортированного массива на экран с помощью цикла for и функции printf.
- Возврат 0 в основной программе означает успешный вывод массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д