选择排序
public static int[] selectionSort(int[] nums) {
for (int i = 0
int minIndex = i
for (int j = i
if (nums[minIndex] > nums[j]) {
minIndex = j
}
}
swap(nums, i, minIndex)
}
return nums
}
private static void swap(int[] nums, int i, int j) {
int temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
}
插入排序
public static int[] insertSort(int[] nums) {
for (int i = 0
int c = nums[i]
int n = i
for (
nums[n] = nums[n - 1]
}
nums[n] = c
}
return nums
}
快速排序
public static List<Integer> quickSort(List<Integer> nums) {
if (nums.size() <= 1) {
return nums;
}
var x = nums.get(0);
var left = nums.stream().filter(a -> a < x)
.collect(toList());
var mid = nums.stream().filter(a -> a == x)
.collect(toList());
var right = nums.stream().filter(a -> a > x)
.collect(toList());
left = quickSort(left);
right = quickSort(right);
left.addAll(mid);
left.addAll(right);
return left;
}
合并排序
private static void mergeSort(int[] a, int l, int r) {
if (r - l <= 1) {
return
}
int mid = (l + r + 1) / 2
mergeSort(a, l, mid)
mergeSort(a, mid, r)
merge(a, l, mid, r)
}
private static void merge(int[] a, int l, int mid, int r) {
int[] b = Arrays.copyOfRange(a, l, mid + 1)
int[] c = Arrays.copyOfRange(a, mid, r + 1)
b[b.length - 1] = c[c.length - 1] = Integer.MAX_VALUE
int i = 0, j = 0
for (int k = l
if (b[i] < c[j]) {
a[k] = b[i++]
} else {
a[k] = c[j++]
}
}
}