本帖最后由 yywryywr 于 2015-9-16 16:08 编辑
这是冒泡排序???
首先逻辑就错了,比如 1 2 3这三个数,在里面比较的时候是这样的:
我们看代码的第一次内层循环是怎么执行的
首先 1和2比,不交换(按LZ的代码来)( 这时j=0)
然后j++,2和3比,不交换(这时j=1)
然后再j++ ,j=2,跳出循环
此时k=a[ ,i ][j] == a[,i,][1]==2 ,(是的,j这个时候是1哦,不是0 )
所以LZ的代码结果应该是2,5,8
列外冒泡排序是种方法,到底小的数放前面还是放后面还不是看自己喜欢和需求
下面是我改的LZ的代码,供参考#include<stdio.h>
void main()
{
int c[5];
int i,j,k;
int temp=0;//temp用来存放目前已知的最小的值
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)//求矩阵中每行的最小数
{
for(j=0;j<2;j++)
{
for (k=j+1;k<3;k++)
{
if (a[i][j]>a[i][k])
{
temp=a[i][k];
a[i][k]=a[i][j];
a[i][j]=temp;//把最小的值放到a[i][j]
}
}
}
c[i]=a[i][0];//这里不是a[i][j],因为循环完毕后j
}
for(i=0;i<3;i++)//输出数组c
{
printf("%d\n",c[i]);
}
}
冒泡排序的三种方法,也共参考
http://www.jb51.net/article/42052.htm
最后,LZ不要省空间,真是好难看懂 |