选择排序:
选择排序算法的实现思路类似插⼊排序,也分已排序区间和未排序区间。但是选择排序每次会从未
排序区间中找到最⼩的元素,将其放到已排序区间的末尾。
图示:
代码实现:
class SortWork {
public static void printArray(int[] array) {//工具方法
for (int i : array) {
System.out.print(i + " ");
}
}
}
public class Bubble {
public static void main(String[] args) {
int[] array = new int[]{2, 5, 4, 3, 7, 6, 1, 5};
selectionSort(array);
SortWork.printArray(array);
}
public static void selectionSort(int[] array) {
int n = array.length;
if (n <= 1) {
return;
} else {
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
int temp = array[minIndex];
array[minIndex] = array[i];
array[i] = temp;
}
}
}
}
演示结果:
复杂度分析:
选择排序空间复杂度:
O(1),是⼀种原地排序算法。
时间复杂度:
选择排序的最好情况时间复杂度、最坏情况和平均情况时间复杂度都为 O(n^2)。
稳定性:
不稳定