一.选择排序原理
选择排序(Selection Sort)是一种简单直观的排序算法,每次从待排序的数组中选择最小(或最大)的元素,并将其放到已排序部分的末尾。选择排序的基本思想是不断选择剩余元素中的最小(或最大)值,依次放置到已排序部分的末尾,直到所有元素都被放置到正确的位置。
选择排序的具体步骤如下:
1.找到未排序部分的最小(或最大)元素:遍历待排序的数组,找到最小(或最大)的元素。
2.将最小(或最大)元素放到已排序部分的末尾:将最小(或最大)元素与未排序部分的第一个元素交换位置,将其放置到已排序部分的末尾。
3.重复步骤1和步骤2,直到所有元素都被放置到正确的位置。
二.使用Java实现选择排序
public class SelectionSort { public static void main(String[] args) { int[] arr = {5, 2, 8, 3, 1}; System.out.println("Before sorting:"); printArray(arr); selectionSort(arr); System.out.println("After sorting:"); printArray(arr); } 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 printArray(int[] arr) { for (int num : arr) { System.out.print(num + " "); } System.out.println(); } }
以上代码使用选择排序算法对一个整数数组进行排序。selectionSort
方法实现了选择排序的逻辑,通过不断选择未排序部分的最小元素,并将其与未排序部分的第一个元素交换位置,将最小元素放置到已排序部分的末尾。运行以上代码,将输出如下结果:
运行以上代码,将输出如下结果:
Before sorting: 5 2 8 3 1 After sorting: 1 2 3 5 8
选择排序算法的时间复杂度为O(n^2),其中n是数组的长度。它是一种不稳定的排序算法,适用于小规模的数组。尽管选择排序的时间复杂度较高,但由于其简单直观的思想,选择排序在某些特定场景下仍然有其应用价值。