为了账号安全,请及时绑定邮箱和手机立即绑定

排序出错,具体程序如下:该怎么修改?

排序出错,具体程序如下:该怎么修改?

C
慕运维8079593 2022-11-19 18:14:01

program main

implicit none

integer,parameter :: M=2,N=3

integer :: b(2,3)=(/2,8,10,9,6,7/)

integer :: aa(2,3),c(3)

integer :: i,j,k,l,temp

do i=1,2

do j=1,3

write(*,*) i,j,b(i,j)

c(j)=b(i,j)
call BUBBLE_SORT(c,j)

aa(i,j)=c(j)

enddo

enddo

write(*,"(2(1xI2))") ((aa(i,j),i=1,2),j=1,3)

stop

end program main

subroutine BUBBLE_SORT(A,N)

implicit none

integer :: N,A(N)

integer I,J,K,TEMP

do I=N-1,1,-1

do J=1,I

if (A(J)>A(J+1))then

TEMP=A(J)

A(J)=A(J+1)

A(J+1)=TEMP

end if

enddo

enddo

return

end subroutine
输出的结果应该是

2 7

6 8

10 9

实际输出的结果是

2 8

10 9

10 9

查看完整描述

1 回答

?
慕莱坞森

TA贡献1545条经验 获得超4个赞

在C语言中,二维数组按行存储,对每一行排序很方便,可以把每一行当成一个一维数组,使用排序函数直接进行排序。 然而对每一列进行排序,就不能直接当成一维数组进行排序。但是仍然可以把第j列a[0...M-1][j]在逻辑上当成一维数组进行排序,下面以使用冒泡排序为例对其排序。 对二维数组按列排序后,进一步展示了如何调用快速排序函数按行进行排序。 程序源码: #include  #include  #define M 3 #define N 3 //输出二维数组的函数 void print(int a[][N]) {    int i,j;    for(i=0;i<M;i++)    {       for(j=0;j<N;j++)       {          printf("%d ",a[i][j]);       }       printf("\n");    }  } //qsort的cmp函数 int cmp(const void*a, const void *b) {      return *(int*)a-*(int*)b; } int main(int argc, char* argv) {     int a[M][N]={3,2,1,9,8,7,6,5,4};          printf("按列排序前的二维数组是:\n");     print(a);     printf("\n");     int j;     for(j=0;j/对每一列进行升序排序      {        //对第j列进行排序         int m,n;        int t;        for(m=M-1;m>0;m--)        {             for(n=0;na[n+1][j])                   {                       t=a[n][j];                       a[n][j]=a[n+1][j];                       a[n+1][j]=t;                   }             }         }      }      printf("按列排序后二维数组变为:\n");     print(a);     printf("\n");           //对按列排序后的二维数组按行升序排序 (调用快速排序函数)           int i;     for(i=0;i<M;i++)     {         qsort(a[i],N,sizeof(a[i][0]),cmp);     }           printf("按列排序后再按行排序后二维数组变为:\n");     print(a);     printf("\n");     system("pause");     return 0; } 编译运行后的结果如下: 程序源码和编译后的可执行程序已经打包放在附件里,可以直接下载运行

查看完整回答
反对 回复 6天前

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信