欢迎访问宙启技术站
智能推送

java实现选择排序完整代码

发布时间:2023-05-17 04:54:16

选择排序是一种简单直观的排序方法,其基本思想是每次从待排序的数据中选择一个最小(或最大)的元素,进行交换,直到所有元素排列有序。下面是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),在大规模数据的排序中效率较低。如果排序的数据量比较小,可以考虑使用选择排序。如果需要对大规模数据进行排序,可以选择更加高效的排序算法,比如归并排序、快速排序等。