一个C语言的队列排法问题 急用 求解

来源:百度知道 编辑:UC知道 时间:2024/06/17 22:02:28
6个人站队3列2排
要求 后边的大于前边的数
下面的大于上边的数

用矩阵和数组来表示此题,则c程序如下(在tc2.0下调试通过):
#include"stdio.h"
#include"stdlib.h"
#define M 2 /* 定义数组,本题用数组来形象表示 */
#define N 3 /* 定义数组维数 */

main()
{
int a[M][N],b[M*N];
int i,j,t;
printf("Input %d elements of the matrix:\n",M*N);
for(i=0;i<M;i++) /* 输入初值 */
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("The original matrix is:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
b[i*N+j]=a[i][j];
printf("%4d",a[i][j]);
}
printf("\n");
}

for(i=0;i<M*N-1;i++)
for(j=M*N-1;j>i;j--)
if(b[j]<b[j-1]) /* 判断,冒泡排序法 */
{
t=b[j];
b[j]=b[j-1];
b[j-1]=t;
}
printf("The final matrix is:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=b[i*N+j];
printf("%4d"