java 选择排序
Java中的选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
以下是Java中实现选择排序的一个基本示例:
public class SelectionSort {
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[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
public static void main(String[] args) {
int[] arr = {64, 25, 12, 22, 11};
selectionSort(arr);
System.out.println("Sorted array");
for (int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");
System.out.println();
}
}
在这个例子中,selectionSort
方法接收一个整型数组 arr
作为参数,并对其进行排序。方法内部,首先通过外层循环控制排序的总轮数(即需要选择多少个最小元素)。在每一轮中,内层循环负责在未排序的元素中找出最小元素的位置。找到后,通过一次交换,将该最小元素放到已排序序列的末尾(即当前外层循环的位置)。这样,随着外层循环的进行,已排序序列逐渐增长,直到整个数组排序完成。
选择排序的平均时间复杂度和最坏时间复杂度都是 O(n^2),其中 n 是数组的长度。因此,它也不是处理大数据集时最高效的排序算法之一。然而,由于其实现简单,它仍然是理解排序算法基础概念的一个好例子。