java实现选择排序完整代码
选择排序是一种简单直观的排序方法,其基本思想是每次从待排序的数据中选择一个最小(或最大)的元素,进行交换,直到所有元素排列有序。下面是Java实现选择排序的完整代码,包括核心算法、排序方法和测试案例。
核心算法
选择排序的核心算法是从待排序数组中选择最小元素并进行交换。这个过程可以使用两个嵌套的循环来实现。外部循环控制当前待排序数组的起始位置,内部循环从起始位置开始向后查找,找到最小元素进行交换。具体代码如下:
public static void selectionSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
排序方法
为了方便调用,我们可以将选择排序封装成一个静态方法,供其他代码调用。具体代码如下:
public static void selectionSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
测试案例
为了验证选择排序的正确性,我们可以编写一个简单的测试案例,生成一个随机数组,对其进行排序并输出结果。具体代码如下:
import java.util.Arrays;
import java.util.Random;
public class SelectionSortTest {
public static void main(String[] args) {
int[] arr = generateRandomArray(10);
System.out.println("Before sort: " + Arrays.toString(arr));
selectionSort(arr);
System.out.println("After sort: " + Arrays.toString(arr));
}
public static int[] generateRandomArray(int n) {
int[] arr = new int[n];
Random random = new Random();
for (int i = 0; i < n; i++) {
arr[i] = random.nextInt(100);
}
return arr;
}
}
上面的测试案例生成一个长度为 10 的随机数组,对其进行排序,并输出排序前后的结果。如果选择排序的实现是正确的,那么排序后的数组应该是升序的。
总结
本文介绍了Java实现选择排序的完整代码,包括核心算法、排序方法和测试案例。选择排序虽然简单,但是时间复杂度为 O(n^2),在大规模数据的排序中效率较低。如果排序的数据量比较小,可以考虑使用选择排序。如果需要对大规模数据进行排序,可以选择更加高效的排序算法,比如归并排序、快速排序等。
