一、文字解释简单选择排序
以升序为例,简单选择排序每轮会选出最小元素的下标,然后把这个下标的元素放在前面。下一轮选择的时候,从第二个元素开始,直到最后一个为止。
二、简单选择排序动图
橙色代表已排好序列
红色代表当前最小元素
绿色代表待比较元素
三、代码
public class SimpleChoiceSort {
public static void main(String[] args) {
int arr[] = {1, 23, 72, 14, 73, 11, 52, 12};
for (int i = 0; i < arr.length; i++) {
int min = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
int t = arr[i];
arr[i] = arr[min];
arr[min] = t;
}
System.out.println(Arrays.toString(arr));
}
}
运行结果:
[1, 11, 12, 14, 23, 52, 72, 73]
四、时间复杂度
简单选择排序的最优、最差、平均时间复杂度均为O(n^2)。