经典排序算法
选择排序

public static void selectionSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
// 找出 0 ~ n-1 中的最小值的索引
// 找出 1 ~ n-1 中的最小值的索引
// 找出 2 ~ n-1 中的最小值的索引
// 找出 i ~ n-1 中的最小值的索引
for (int i = 0; i < arr.length; i++) {
int minValueIndex = i;
for (int j = i + 1; j < arr.length; j++) {
minValueIndex = arr[j] < arr[minValueIndex] ? j : minValueIndex;
}
// 交换值,将每次最小都放入前面
swap(arr, i, minValueIndex);
}
}
private static void swap(int[] arr, int i, int j) {
int iV = arr[i];
arr[i] = arr[j];
arr[j] = iV;
}
@Test
public void testSelectionSort() {
int[] arr = new int[]{1, 3, 5, 3, 2, 9, 2, 5};
selectionSort(arr);
System.out.println(Arrays.toString(arr));
}冒泡排序

插入排序

归并排序

递归实现
非递归实现
小和问题
快速排序
最后更新于