准备工作
- 理解数组的创建和使用
- 理解循环的使用以及循环的嵌套使用
- 分析问题:从图中可以看出,选择排序是需要标记两个位置,一个是当前位置,另一个是从当前位置的下一个位置开始遍历,直到找到最小值的位置并标记,因此需要两层循环,外层循环控制得出最大值或最小值,因此只需要循环数组的长度-1即可,最后一次不用再找;里层循环用来遍历从外层循环的当前位置之后的数比较,得出最大或最小值并标记其位置;最后将得到的最大值或最小值和外层循环的当前位置进行交换,再进行下一轮循环和下一个位置标记,重复寻找。
如果文字理解不清楚,用代码演示就清晰明了
代码实现
public class Test {
public static void main(String[] args) {
int[] ints = selectionSort(new int[]{45,22,55,33,44,66,11,23,54,88,16});
System.out.println(Arrays.toString(ints));
}
public static int[] selectionSort(int[] array){
for (int i = 0; i <array.length-1 ; i++) {
int minIndex=i;
for (int j = i+1; j <array.length ; j++) {
if (array[j]<array[minIndex]){
minIndex=j;
}
}
if (minIndex!=i) {
int temp = array[minIndex];
array[minIndex] = array[i];
array[i] = temp;
}
}
return array;
}
}