选择排序
public void selectSort(int [] arr) {
for(int i=0;i<arr.length-1;i++) {
int min=arr[i];
for(int j=1+i;j<arr.length;j++) {
if(arr[j]<min) {
int temp=arr[j];
arr[j]=min;
min=temp;
}
}
}
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
}
不明白这样错在哪了?正确写法是将数组下标作为交换对象,而我直接把数组元素进行交换。但是不懂为什么错误,求大神指点一下。正确写法是下面这样的:
public static int[] sort(int[] array){
//总共要经过N-1轮比较
for(int i = 0 ; i < array.length-1 ; i++){
int min = i;
//每轮需要比较的次数
for(int j = i+1 ; j < array.length ; j++){
if(array[j]<array[min]){
min = j;//记录目前能找到的最小值元素的下标
}
}
//将找到的最小值和i位置所在的值进行交换
if(i != min){
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
//第 i轮排序的结果为
System.out.print("第"+(i+1)+"轮排序后的结果为:");
display(array);
}
return array;
}