求c语言大神解答!!在线等!!谢谢了!!!有一个由整数组成的n行m列矩阵,请对矩阵中的元素重新进行

求c语言大神解答!!在线等!!谢谢了!!!有一个由整数组成的n行m列矩阵,请对矩阵中的元素重新进行排列,使得同行元素中右边的元素大于左边的元素,同列的元素中下边的元素大于... 求c语言大神解答!!在线等!!谢谢了!!!有一个由整数组成的n行m列矩阵,请对矩阵中的元素重新进行排列,使得同行元素中右边的元素大于左边的元素,同列的元素中下边的元素大于上边的元素。这里n、m可以取小点比如4,5。 展开
 我来答
百度网友68d8d32
2015-12-07 · TA获得超过387个赞
知道小有建树答主
回答量:300
采纳率:100%
帮助的人:280万
展开全部
#include<stdio.h>
void BubbleSort(int a[],int n)

int i,j,r;
for(i=0;i<n;i++)
{
for(j=i;j>=1;j--)
{
if(a[j]<a[j-1])
{
r=a[j];
a[j]=a[j-1];
a[j-1]=r;
}
else break; 
}
}}
int main()
{
const int n=4;
const int m=5;
int a[n][m],i,j,temp[m*n];
for(i=0;i<n;++i)
for(j=0;j<m;++j)
{
scanf("%d",&a[i][j]);//从键盘输入矩阵各个元素
temp[5*i+j]=a[i][j];//二维数组一维化
}
BubbleSort(temp,m*n);//对一维数组排序
for(i=0;i<n;++i)
{
for(j=0;j<m-1;++j)
{
a[i][j]=temp[5*i+j];//归还给二维数组
printf("%d ",a[i][j]);//打印出来
}
a[i][j]=temp[5*i+j];
printf("%d\n",a[i][j]);
}
return 0;
}
White_MouseYBZ
2017-08-01 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6653万
展开全部

按一维数组从小到大排序即可。

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#define N 4
#define M 5
int main(int argc,char *argv[]){
int m[N][M],i,j,k,*p,t;
srand((unsigned)time(NULL));
printf("Sorting before:\n");
for(i=0;i<N;i++){
for(j=0;j<M;printf("%3d",m[i][j++]=rand()%100));
printf("\n");
}
printf("\nAfter ordering:\n");
for(p=(int *)m,t=M*N,i=0;i<t;i++){
for(k=i,j=k+1;j<t;j++)
if(p[k]>p[j])
k=j;
if(k-i)
j=p[i],p[i]=p[k],p[k]=j;
printf((i+1)%M ? "%3d" : "%3d\n",p[i]);
}

printf("\n");
return 0;
}

运行结果如下:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
苦中作乐香蕉
2019-02-17
知道答主
回答量:28
采纳率:100%
帮助的人:4.9万
展开全部
#include<stdio.h>
#define max(a,b) (a>b?a:b)
int size_heng,size_shu;
int read() {
int temp;
scanf("%d",&temp);
return temp;
}
void swap(int *a,int *b) {
int temp=*a;
*a=*b,*b=temp;
}
void qsort(int l,int r,int a[]) {
int i=l,j=r,mid=a[(l+r)>>1];
while(i<=j) {
while(a[i]<mid)i++;
while(a[j]>mid)j--;
if(i<=j)swap(&a[i],&a[j]),i++,j--;
}
if(l<j)qsort(l,j,a);
if(i<r)qsort(i,r,a);
}
void swaparr(int a[],int b[]) {
int temp[size_heng+1];
for(int i=1; i<=size_heng; i++)
temp[i]=a[i];
for(int i=1; i<=size_heng; i++)
a[i]=b[i];
for(int i=1; i<=size_heng; i++)
b[i]=temp[i];
}
int map[32767][32767];
int main() {
puts("请输入矩阵的长");
size_heng=read();
puts("请输入矩阵的宽");
size_shu=read();
puts("请输入这个矩阵");
for(int i=1; i<=size_shu; i++) {
for(int j=1; j<=size_heng; j++)
map[i][j]=read();
qsort(1,size_heng,map[i]);
}
for(int i=1;i<=size_shu;i++)
for(int j=i+1;j<=size_shu;j++)
if(map[i][1]>map[j][1])
swaparr(map[i],map[j]);
puts("排序完成!!");
puts("现在的矩阵:");
for(int i=1; i<=size_shu; i++,puts(""))
for(int j=1; j<=size_heng; j++)
printf("%d ",map[i][j]);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
康桥不再忧伤
2015-12-07
知道答主
回答量:39
采纳率:0%
帮助的人:8.5万
展开全部
把冒泡排序改下 升序改降序 再在前面加一个for循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-07-31
展开全部
这个完全看不懂的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式