Nhập ma trận m×n. Sắp xếp mỗi hàng theo thứ tự tăng dần, mỗi cột theo thứ tự giảm dần.
Giải thuật
- Sắp hàng tăng: 3 vòng lặp i, j, k (j
a[i][k] - Sắp cột giảm: 3 vòng lặp j, i, k (i
- Dùng bản sao ma trận để giữ nguyên gốc cho mỗi phép sắp
Chương trình
#include <stdio.h>
void main() {
int i, j, k, a, m, n, ma[10][10], mb[10][10];
printf("Order (m n): "); scanf("%d %d", &m, &n);
printf("Elements: "); for(i=0;i<m;i++) for(j=0;j<n;j++) { scanf("%d",&ma[i][j]); mb[i][j]=ma[i][j]; }
// Sắp hàng tăng trên ma
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]) { a=ma[i][j]; ma[i][j]=ma[i][k]; ma[i][k]=a; }
// Sắp cột giảm trên mb
for(j=0;j<n;j++) for(i=0;i<m;i++) for(k=i+1;k<m;k++) if(mb[i][j]
Kết quả
Input 3x4:
1 2 3 4
1 2 3 4
5 1 2 3
Rows ascending:
1 2 3 4
1 2 3 4
1 2 3 5
Columns descending:
5 2 3 4
1 2 3 4
1 1 2 3