你那个错误的输出一定是: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

解决方案 »

  1.   

    仔细看看程序,把每一种情况都过一遍,就很清晰了
    在那里输出,一定会有问题的;
    因为程序会运行那个循环会运行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");
    }
    }