####Đơn giản là viết 1 hàm sắp xếp , viết hàm lấy theo hàng,cột rồi sắp lại thôi.
#include <stdio.h>
#include <stdlib.h>
int less(const void* a,const void * b){
return *(int*)a - *(int*)b;
}
int greater(const void* a,const void *b){
return -less(a,b);
}
int m,n;
int a[100][100];
int tmp[100];
void show(const char *s){
int i,j;
puts(s);
for(j=0;j<m;++j){
for(i=0;i<n;++i){
printf("%4d",a[j][i]);
}
printf("\n");
}
}
void take_by_row(int row){
int i;
for(i=0;i<n;++i){
tmp[i]=a[row][i];
}
}
void set_by_row(int row){
int i;
for(i=0;i<n;++i){
a[row][i]=tmp[i];
}
}
void take_by_column(int col){
int i;
for(i=0;i<m;++i){
tmp[i]=a[i][col];
}
}
void set_by_column(int col){
int i;
for(i=0;i<m;++i){
a[i][col]=tmp[i];
}
}
void tang_trai_phai(){
int i;
for(i=0;i<m;++i){
take_by_row(i);
qsort(tmp,n,sizeof(int),less);
set_by_row(i);
}
}
void tang_tren_duoi(){
int i;
for(i=0;i<n;++i){
take_by_column(i);
qsort(tmp,m,sizeof(int),less);
set_by_column(i);
}
}
void giam_trai_phai(){
int i;
for(i=0;i<m;++i){
take_by_row(i);
qsort(tmp,n,sizeof(int),greater);
set_by_row(i);
}
}
void giam_tren_duoi(){
int i;
for(i=0;i<n;++i){
take_by_column(i);
qsort(tmp,m,sizeof(int),greater);
set_by_column(i);
}
}
int main() {
scanf("%d%d",&m,&n);
int i,j;
for(j=0;j<m;++j){
for(i=0;i<n;++i){
scanf("%d",a[j]+i);
}
}
tang_trai_phai();
show("tang trai-phai");
giam_trai_phai();
show("giam trai-phai");
tang_tren_duoi();
show("tang tren-duoi");
giam_tren_duoi();
show("giam tren-duoi");
return 0;
}
#output
tang trai-phai
1 2 8
3 7 9
4 5 6
giam trai-phai
8 2 1
9 7 3
6 5 4
tang tren-duoi
6 2 1
8 5 3
9 7 4
giam tren-duoi
9 7 4
8 5 3
6 2 1