比较好懂的选择排序(java)
程序员文章站
2022-03-15 21:01:51
选择排序介绍选择排序的核心思想就是每次遍历我都确定一个值,第一次遍历我把最小值确定下来放在最第一个,然后第二次遍历我把第二小的确定下来放在第二个。每次确定一个值我们就可以少考虑一个值。这就是选择排序图解(来自参考资料)代码实现 public static void main(String[] args) { int[] arr = {2, 1, 5, 4, 6, 3, 0}; selectSort(arr); } public static...
选择排序
介绍
选择排序的核心思想就是每次遍历我都确定一个值,第一次遍历我把最小值确定下来放在最第一个,然后第二次遍历我把第二小的确定下来放在第二个。每次确定一个值我们就可以少考虑一个值。这就是选择排序
图解(来自参考资料)
代码实现
public static void main(String[] args) {
int[] arr = {2, 1, 5, 4, 6, 3, 0};
selectSort(arr);
}
public static void selectSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
// 设定当前遍历的数据是最小值并保存索引
int minIndex = i;
int min = arr[i];
// 遍历找出最小值
for (int j = i + 1; j < arr.length; j++) {
// 如果有值比最小值小,就把min改为当前值
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
// 遍历完后确定了最小值,如果
// 最小值不是当前值最小值和当前值交换位置。
if (minIndex != i) {
arr[minIndex] = arr[i];
arr[i] = min;
}
}
System.out.println(Arrays.toString(arr));
}
复杂度
时间复杂度O(n^2)
空间复杂度O(1)
总结
选择排序可以把数组内部看成两个数组,一开始左边的数组没有值,第一轮确定好最小值后把值加进左边的数组,然后继续遍历以此类推。
参考资料
点击传送
https://www.cnblogs.com/skywang12345/p/3597641.html
秃头萌新一枚,多多关照。
本文地址:https://blog.csdn.net/w7335123/article/details/110238968