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

Java函数教程:如何实现选择排序

发布时间:2023-06-19 20:40:32

选择排序(Selection Sort)是一种简单直观,但很低效的排序算法。选择排序的工作原理是将数组分成已排序和未排序两个部分,每次从未排序部分选出最小(或最大)的元素,放置到已排序部分的末尾。以此类推,直到所有元素排序完毕。

选择排序的实现分为两个步骤:选取最小元素和交换元素位置。选取最小元素的方法是找到未排序部分的最小元素的下标,然后将其和未排序部分的 个元素交换位置。交换元素位置是用一个临时变量保存未排序部分 个元素,然后将最小元素值赋值到 个元素中,最后将临时变量中保存的值赋值到最小元素的位置。

下面是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;
    }
}

该函数接受一个整型数组作为参数,并按照选择排序算法对其进行排序。函数内部使用两个for循环, 个循环从0到n-1依次遍历未排序部分的 个元素,第二个循环从i+1到n-1依次遍历未排序部分,找到最小元素的下标,并将其和未排序部分的 个元素交换位置。

下面是一个示例程序,用来测试选择排序函数的正确性和性能:

public static void main(String[] args) {
    int[] arr = {3, 5, 2, 7, 9, 4, 1, 8, 6};
    long startTime = System.nanoTime();
    selectionSort(arr);
    long endTime = System.nanoTime();
    long duration = endTime - startTime;
    for (int i = 0; i < arr.length; i++){
        System.out.print(arr[i] + " ");
    }
    System.out.println("
Time elapsed: " + duration + " nanoseconds");
}

该程序首先定义一个整型数组,并使用选择排序函数对其进行排序。排序完成后,程序遍历数组,并输出排序后的结果。最后,程序输出排序时间。

选择排序的时间复杂度为O(n^2),因此它只适用于小规模的数组排序。对于大规模的数组排序,应该使用更高效的排序算法,如快速排序、归并排序等。