C program to sort all columns and rows of matrix

In C programming, sorting matrix rows and columns involves rearranging elements within each row in ascending order and elements within each column in descending order. This operation requires nested loops to traverse and compare matrix elements.

Syntax

/* Row sorting (ascending) */
for (i = 0; i < rows; i++) {
    for (j = 0; j < cols; j++) {
        for (k = j + 1; k < cols; k++) {
            if (matrix[i][j] > matrix[i][k]) {
                /* swap elements */
            }
        }
    }
}

/* Column sorting (descending) */
for (j = 0; j < cols; j++) {
    for (i = 0; i < rows; i++) {
        for (k = i + 1; k < rows; k++) {
            if (matrix[i][j] < matrix[k][j]) {
                /* swap elements */
            }
        }
    }
}

Example: Sorting Matrix Rows and Columns

The following program demonstrates sorting all rows in ascending order and all columns in descending order −

#include <stdio.h>

int main() {
    int i, j, k, temp, m, n;
    int ma[10][10], mb[10][10];
    
    printf("Enter the order of the matrix: ");
    scanf("%d %d", &m, &n);
    
    printf("Enter elements of the matrix:<br>");
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &ma[i][j]);
            mb[i][j] = ma[i][j];  /* Copy for column sorting */
        }
    }
    
    printf("The given matrix is:<br>");
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            printf("%d ", ma[i][j]);
        }
        printf("<br>");
    }
    
    /* Sort rows in ascending order */
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            for (k = j + 1; k < n; k++) {
                if (ma[i][j] > ma[i][k]) {
                    temp = ma[i][j];
                    ma[i][j] = ma[i][k];
                    ma[i][k] = temp;
                }
            }
        }
    }
    
    printf("After arranging rows in ascending order:<br>");
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            printf("%d ", ma[i][j]);
        }
        printf("<br>");
    }
    
    /* Sort columns in descending order */
    for (j = 0; j < n; j++) {
        for (i = 0; i < m; i++) {
            for (k = i + 1; k < m; k++) {
                if (mb[i][j] < mb[k][j]) {
                    temp = mb[i][j];
                    mb[i][j] = mb[k][j];
                    mb[k][j] = temp;
                }
            }
        }
    }
    
    printf("After arranging columns in descending order:<br>");
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            printf("%d ", mb[i][j]);
        }
        printf("<br>");
    }
    
    return 0;
}
Enter the order of the matrix: 3 4
Enter elements of the matrix:
1
2
3
4
1
2
3
4
5
1
2
3
The given matrix is:
1 2 3 4 
1 2 3 4 
5 1 2 3 

After arranging rows in ascending order:
1 2 3 4 
1 2 3 4 
1 2 3 5 

After arranging columns in descending order:
5 2 3 4 
1 2 3 4 
1 1 2 3 

How It Works

  • Row sorting: Uses bubble sort within each row to arrange elements in ascending order by comparing adjacent elements.
  • Column sorting: Operates on the original matrix copy (mb) to sort each column in descending order.
  • Time complexity: O(m × n²) for row sorting + O(n × m²) for column sorting.
  • Space complexity: O(m × n) for storing the matrix copy.

Conclusion

Matrix row and column sorting in C requires nested loops for element comparison and swapping. The algorithm maintains separate copies to demonstrate both ascending row sorting and descending column sorting independently.

Updated on: 2026-03-15T14:16:33+05:30

5K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements