public static void selectSort(int[] arr)
{
int min=0;
for (int x=0; x<arr.length-1 ; x++)
{
min =x;//min存储遍历中最小值得坐标
for(int y=x+1; y<arr.length; y++)
{
if(arr[min]>arr[y])//遍历中遇到比角标min中的数更小的,min指向该角标
{
min=y;
}
}
if(min!=x)//min中值改变了,则将角标min中值与角标x值交换
{
int temp = arr[x];
arr[x] = arr[min];
arr[min]= temp;
}
}
}
该方法在遍历查找最小值是不会进行交换,只有当找到最小值后,才产生交换,减少了交换次数,从而得到优化
|
|