Java实现选择排序算法(含图,注释超详细)
程序员文章站
2024-03-17 22:04:22
...
选择排序的思想就是在未排序序列当中找到最小的数,然后把它放到已排序序列的末尾(也就是与未排序序列开头的数交换位置),重复这样的操作,未排序序列的数都进到入了已排序序列当中,排序也就结束了。我们可以找到两个关键点,一个是找到未排序序列中最小的数,我们需要遍历为排序序列去得到它,另一个是已排序序列的末尾,每次将未排序中最小的数放进已排序的末尾之后,那么这个末尾的位置就要同步更新。
代码实现:
public class SelectionSort {
public static void main(String[] args) {
//定义数组
int[] arr = {99, 55, 2, 3, 9, 10, 22, 34, 67, 89, 69, 92, 0};
//已排序序列的末尾
int last = 0;
//排序
sort(arr, last);
//输出
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void sort(int[] arr, int last) {
//开始时以未排序数列的第一个节点为最小值位置
int target = last;
//从已排序序列的末尾(也就是未排序序列的开头)开始遍历,
//找到未排序序列中的最小值
for (int i = last; i < arr.length; i++) {
if (arr[i] < arr[target]) {
//找到比当前最小值更小的值就以此位置为最小值位置
target = i;
}
}
//将最小值与未排序数列的开头值交换
int min = arr[target];
arr[target] = arr[last];
arr[last] = min;
//让剩下的序列继续排序
if (last < arr.length - 1) {
//更新已排序序列末尾的位置
last++;
sort(arr, last);
}
}
}
输出:
0
2
3
9
10
22
34
55
67
69
89
92
99
本文动图演示引自:https://www.cnblogs.com/onepixel/articles/7674659.html
上一篇: U盘裸机安装CoreOS 博客分类: linux coreos裸机U盘
下一篇: 最长公共子序列