你那个错误的输出一定是:1,39,28,5,39,28,39这7个数字.
原因:你在没依次比较的时候 当要选出的第i个最小数字的时候,每次与未选出的数比较,当大于的时候就会输出小的那个数.
比如 在i=1 a[i]=45 它会a[2]比较 大于a[2] 交换后输出a[1]=39 接着a[1]于a[3]比较 同样
a[1]>a[3]交换后输出a[1]=28 然后同样输出5 就这样
当i=1时 就会输出 39 28 5
i=0 1
i=2 39 28
i=3 39
原因:你在没依次比较的时候 当要选出的第i个最小数字的时候,每次与未选出的数比较,当大于的时候就会输出小的那个数.
比如 在i=1 a[i]=45 它会a[2]比较 大于a[2] 交换后输出a[1]=39 接着a[1]于a[3]比较 同样
a[1]>a[3]交换后输出a[1]=28 然后同样输出5 就这样
当i=1时 就会输出 39 28 5
i=0 1
i=2 39 28
i=3 39
在那里输出,一定会有问题的;
因为程序会运行那个循环会运行4!=24次,中间符合你那个if的条件不止一次;
比如第一次交换完,数组为1,45,39,28,5;
而进行第二次循环的时候,45首先和39交换,输出39,但是又发现28比他小,又输出28,这样就有问题,因为i这个位置的最后结果还没有确定下来;
这样写也可以public class ArrayProg
{
public static void main(String args[])
{
int temp;
int array_name[]={39,45,1,28,5};
int size=array_name.length;
System.out.print("\n\n The original array value is:");
for(int i=0;i<size;i++)
{
System.out.print(" "+array_name[i]);
}
System.out.print("\n\n The sorted array is:");
for(int i=0;i<size;i++)
{
for(int j=i+1;j<size;j++)
{
if(array_name[i]>array_name[j])
{
temp=array_name[i];
array_name[i]=array_name[j];
array_name[j]=temp;
}
}
System.out.print(" "+array_name[i]);
}
System.out.print("\n\n");
}
}