选择排序是一种简单直观的排序算法。其基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。经典的选择排序算法有:直接选择排序和堆排序。
下面是直接选择排序的Java实现:
// 交换数组中的两个元素
public static void swap(int[] numbers, int i, int j) {
if (numbers[i] == numbers[j]) return;
numbers[i] = numbers[i] ^ numbers[j];
numbers[j] = numbers[i] ^ numbers[j];
numbers[i] = numbers[i] ^ numbers[j];
}
public static void selectSort(int[] numbers) {
for (int i =0; i < numbers.length; i++) {
int min = i; // 该轮比较中的最小值的位置
for (int j = i + 1; j < numbers.length; j++)
if (numbers[j] < numbers[min]) min = j;
swap(numbers, i, min);
}
}