【Java算法】02_选择排序
基本思想:每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素为止。
算法实现:每一趟通过不断地比较交换来使得首元素为当前最小,交换是一个比较耗时间的操作。我们可以通过设置一个值来记录较小元素的下标,循环结束后存储的当前最小元素的下标,这时在进行交换就可以了。
public class SelectionSort {
public static void selectionSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
for (int i = 0; i < arr.length; i++) {
// 最小值在哪个位置上 i~n-1
int minIndex = i;
for (int j = i; i < arr.length; j++) { // i ~ N-1 上找最小值的下标
minIndex = arr[j] < arr[minIndex] ? j : minIndex;
}
swap(arr, i, minIndex);
}
}
// 交换
public static void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}