日期:2014-05-20  浏览次数:20827 次

一个简单的排序算法问题,为什么结果是这样的?
package   exercise;

public   class   Paixu   {

/**
  *   @param   args
  */
public   static   void   main(String[]   args)   {

//   TODO   自动生成方法存根
Paixu   cs=new   Paixu();
int   num[]={2,3,5,1,7,9,12,45,4,8};

for(int   i=0;i <num.length;i++)
System.out.print(num[i]+ "   ");
System.out.println();
cs.paixu(num);


for(int   i=0;i <num.length;i++)
System.out.print(num[i]+ "   ");
System.out.println();

}
public   void   paixu(int[]   num)
{
for(int   i=0;i <num.length;i++)
{
int   min=0;
for(int   j=i;j <num.length;j++)
{
if(num[j] <num[min])
{
min=j;
}
}
int   tmp;
tmp=num[i];
num[i]=num[min];
num[min]=tmp;
}
}

}


输出结果如下:
2   3   5   1   7   9   12   45   4   8  
45   1   2   3   4   5   7   8   9   12  
why???


------解决方案--------------------
public void paixu(int[] num)
{
for(int i=0;i <num.length;i++)
{
int min=0; ///////////////////////这个地方怎么是从0开始呢?应该是从i开始
for(int j=i;j <num.length;j++)
{
if(num[j] <num[min])
{
min=j;
}
}
int tmp;
tmp=num[i];
num[i]=num[min];
num[min]=tmp;
}
}