思路:选择排序就是每次都选择最小的元素添加到到有序区域的末尾
- 分为有序区与待排区,开始有序区长度为 0
- 在待排区找到最小的元素,与有序区+1 位置交换,一趟比较结束。一共需要进行 n-1 趟
- 通过在待排区域元素的依次比较,选择最小元素
- 时间复杂度O(n^2),最好与最坏情况,为了查找到最小元素,内层的循环都需要执行
public class Solution {
public static void selectSort(int[] array) {
int minIndex;
int temp;
for (int i = 0; i < array.length - 1; i++) {
minIndex = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
}
public static void main(String[] args) {
int[] array = new int[]{2, 5, 1, 6, 9, 3};
selectSort(array);
for (int i : array) {
System.out.print(i + " ");
}
}
}