一个简单的排序算法问题,为什么结果是这样的?
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;
}
}