注册 登录
编程论坛 新人交流区

请教一个排序问题!

wjcloudy 发布于 2007-11-13 09:38, 635 次点击

将一个数组的元素按大小顺序重新排列,必须用for循环语句:
我写了一个,但数组元素有相同的就会输不出最小的数,请各位指点一二.
#include<stdio.h>
int main()
{
int b[3][4],m,n,i,j,max,min,k=10000;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
 /*输出原数组*/
printf("原数组:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%3d",a[i][j]);
if(j==3)
printf("\n");
}
}
 /*求数组最小值*/

min=a[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(min>=a[i][j])min=a[i][j];
}
}
/*将数组里的数按大小顺序排列*/

printf("排序后的数组:\n");
max=a[0][0];
for(m=0;m<=2;m++)
{
for(n=0;n<=3;n++)
{
for(i=0;i<=2;i++)
{
for(j=0;j<=3;j++)
{
if(a[i][j]>=k)continue;
else if(max<=a[i][j])
max=a[i][j];
}
}
b[m][n]=max;
printf("%-3d",b[m][n]);
k=max;
max=min;
if(n==3)printf("\n");
}
}
return 0;
}

7 回复
#2
codelet2007-11-13 10:10

你没写输出语句
/*求数组最小值*/

min=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(min>a[i][j])
min=a[i][j];
printf("%d",min); //输出min

#3
yuhuidie362007-11-13 10:23
在我机子上咋运行不通啊!
#4
codelet2007-11-13 10:39
不是吧?在我机子上输出-10 啊
#5
bayforever2007-11-13 11:34
。。。。。还没到10篇
#6
lchy1102007-11-14 10:05

马上就10

#7
zmicesea2007-11-14 11:44
呵呵
#8
wjcloudy2007-11-17 18:42
回复:(codelet)你没写输出语句/*求数组最小值*/...
我并不是要输出最小值,而是输出重大到小排序后的数组
1