1、算法描述
每一趟从待排序列中选择一个最小的放到待排序列的开头。
操作步骤
初始无序区R(1,n),有序区s为空
(1)、从无序区中选择一个最小的,与无序区的第一个数交换,无序区向后退1,有序区加1。
(2)、重复(1),直至无序区剩下最后一个数。
2、图例

3、代码
public void sort(int[] data) {
for (int i = 0; i < data.length - 1; i++) {
int min = i;
for (int j = i; j < data.length; j++) {
if (data[j] < data[min])
min = j;
}
if (min != i) {
swap(data, i, min);
}
}
}4、稳定性和复杂度
稳定性:选择排序是不稳定的排序。
平均时间复杂度:O(n^2)
选择排序的比较操作为n(n-1)/2,如果序列是升序序列则交换操作为0,反之则为n-1。
空间复杂度:O(1)
本文深入解析选择排序算法的实现过程,包括算法描述、操作步骤、图例、代码实现、稳定性和复杂度分析。

被折叠的 条评论
为什么被折叠?



