实现对输入m×n矩阵的排序,遵循如下规则:
(1)首先将矩阵内每一列的元素值,按照从小到大的顺序排列;
(2)然后将矩阵的各个列按照该列元素之和从小到大的顺序排列,并将排序后的矩阵输出。 如果某些列元素和相同,则按原来顺序排列。
要求:编写函数order(int m, int n, int *matrix),m和n分别为矩阵的行数和列数,matrix为存放矩阵元素的数组(一维或二维均可)
我先写了列元素排序的函数,但是好多错误,怎么改正
#include <stdio.h>
#include <algorithm>
using namespace std;
int main () {
int n,m,j,k,str[100][100],(*p)[100];
p=str;
void order(int m, int n, int *str);
scanf("%d %d",&m,&n);
for(j=0; j<m; j++){
for(k=0; k<n; k++) {
scanf("%d",*(p+j)+k);}}
order(m,n,*p);
return 0;
}
void order(int m, int n, int *str){
int j,k,sum[100]={0};
for (int j=0;j<n;j++) sort(str[j],str[j]+m);
for(j=0; j<m; j++){
for(k=0; k<n; k++){
printf("%d",*(*(&str+j)+k));
}
printf("\n");
}
return ;}