一、什么是选择排序
【以下内容都以升序为例】
选择排序(Selection Sort),因其排序过程进行多轮对比选择得名。简单来说,就是每一轮通过“1vs多”(有点类似于酒桌上的“打圈”)选出当前轮次的最小值,将其置于本轮的初始位置,多轮比较之后最终实现将所有元素有序排列。
二、选择排序的排序过程
三、代码实现
上述排序过程的代码如下:
public class SelectionSortDemo {
public static void main(String[] args) {
int[] nums = {6, 9, 2, 5, 3, 7};
System.out.println("排序前原始数组: " + Arrays.toString(nums));
selectionSort(nums);
System.out.println("排序后的数组: " + Arrays.toString(nums));
}
private static void selectionSort(int[] arr) {
int i, j, temp, minIndex;
for (i = 0; i < arr.length - 1; i++) {//外层循环,对应轮数
minIndex = i;//最小元素下标初始为i
for (j = i + 1; j < arr.length; j++) {//内层循环,对应每轮选择排序的次数,需要遍历第i个之后的元素,故从i+1开始
//如果arr[minIndex]的初始值不是最小值,则将真正最小值下标赋给minIndex
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
//交换位置
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
程序运行结果:
四、Ending
上述代码是为了解释选择排序的基本过程,仍有可以优化的地方,这里就不做改动了。
2023年3月30日23:29:54 dgz