从第0个下标开始往后找最小的,然后进行交换.
从第1个下标开始往后找最小的,然后进行交换.
手动写上两边执行步骤就可以看出规律来,然后套个循环就可以了
public class Test {
public static void main(String[] args) {
int[] arr = {8,3,2,1,7,4,6,5};
//假设第一个元素是最小的
int min = arr[0];
//真实最小的下标
int minIndex = 0;
for(int i=1;i<arr.length;i++){
if(min > arr[i]){
min = arr[i];
minIndex = i;
}
}
//不等于0说明第一个元素就是最大的就不用交换了,节省性能
if(minIndex!=0){
arr[minIndex] = arr[0];
arr[0] = min;
}
System.out.println(Arrays.toString(arr));
int min2 = arr[1];
int minIndex2 = 1;
for(int i=2;i<arr.length;i++){
if(min2 > arr[i]){
min2 = arr[i];
minIndex2 = i;
}
}
if(minIndex2!=0){
arr[minIndex2] = arr[1];
arr[1] = min2;
}
System.out.println(Arrays.toString(arr));
}
}
最终答案
public class Test {
public static void main(String[] args) {
int[] arr = {8,3,2,1,7,4,6,5};
for(int j=0;j<arr.length;j++){
int min = arr[j];
int minIndex = j;
for(int i=j+1;i<arr.length;i++){
if(min > arr[i]){
min = arr[i];
minIndex = i;
}
}
if(minIndex!=0){
arr[minIndex] = arr[j];
arr[j] = min;
}
System.out.println(Arrays.toString(arr));
}
}
}