算法-选择排序
解题思路
选择排序算法的实现思路有点类似插入排序算法,也分为已排序区间
和未排序区间
。但是选择排序每次会从未排序区间中找到最小的元素
,将其放到已排序区间的末尾。
大白话就是:对未排序区的数据进行排序,排完序的数据放到已排序区。
*注意:
此处可能有点抽象,对于已排序区与未排序区的理解有点抽象,其实就是:本身还是一个数组,我们将它抽象的理解为两个区域,前面就是已排序区,后面就是未排序区。
图解
代码:
Java编写
import java.util.Arrays;
public class SelectionSort {
public static void selectSort(int[] nums){
for (int i = 0; i < nums.length; i++) {
int minIndex = i;// 假设已排序区最后一位的下标 i 为最小值的下标
// 遍历比较,更新最小值的下标
for (int j = i; j < nums.length; j++) {
if (nums[j] < nums[minIndex]){
minIndex = j;
}
}
// 若不相等,则最小值发生改变,交换!
if (minIndex != i){
swap(nums,minIndex,i);
}
}
}
private static void swap(int[] nums, int i, int j) {
int t = nums[i];
nums[i] = nums[j];
nums[j] = t;
}
public static void main(String[] args) {
int[] nums = {1,2,7,5,9,8};
selectSort(nums);
System.out.println("执行结果:" + Arrays.toString(nums));
}
}
执行结果
执行结果:[1, 2, 5, 7, 8, 9]