选择排序(Selection Sort)是一种简单直观的排序算法,其基本思想是:将数组分为两个部分,一个部分为有序的,一个部分为无序的。每次从无序部分中选择最小的元素,将其放到有序部分的末尾。重复这个过程直到整个数组有序为止。
下面是 Java 语言实现选择排序的代码:
public class SelectionSort {
public static void selectionSort(int[] arr) {
int len = arr.length;
int minIndex, temp;
for (int i = 0; i < len - 1; i++) {
minIndex = i;
for (int j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
代码中的 selectionSort
方法实现了选择排序算法。首先获取数组的长度,然后定义两个变量 minIndex
和 temp
。变量 minIndex
存储无序部分中最小元素的位置,变量 temp
存储交换位置时用到的临时变量。在外层循环中,i 从 0 开始遍历到 len - 1,每次都会将最小元素放到有序部分的末尾。内层循环中,j 从 i + 1 开始遍历到 len - 1,找到无序部分中最小元素的位置 minIndex。在找到最小元素之后,将其与无序部分的第一个位置交换,即将无序部分中的第一个元素与最小元素交换位置,从而将最小元素放到有序部分的末尾。
接下来给出一个例子,假设有一个数组 arr = {5, 8, 3, 1, 6},按照选择排序的算法流程进行排序,具体过程如下:
- 第一趟排序,设置有序部分为 {5},无序部分为 {8, 3, 1, 6},找到无序部分中最小的数 1,并将其与无序部分的第一个数交换位置,得到数组 {1, 8, 3, 5, 6}。
- 第二趟排序,设置有序部分为 {1, 5},无序部分为 {8, 3, 6},找到无序部分中最小的数 3,并将其与无序部分的第一个数交换位置,得到数组 {1, 3, 8, 5, 6}。
- 第三趟排序,设置有序部分为 {1, 3, 5},无序部分为 {8, 6},找到无序部分中最小的数 6,并将其与无序部分的第一个数交换位置,得到数组 {1, 3, 5, 6, 8}。
- 排序完成。
以上就是 Java 中选择排序算法的详细介绍。