Java 常用排序方法(直接可用)
- 数组自带排序(最简单)
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = {5, 2, 9, 1, 5, 6};
// 升序排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
- 集合排序(List)
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(4);
Collections.sort(list);
System.out.println(list);
}
}
- 冒泡排序(手写基础)
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
- 选择排序
public static void selectionSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
int min = i;
for (int j = i+1; j < n; j++) {
if (arr[j] < arr[min]) min = j;
}
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
- 插入排序
public static void insertionSort(int[] arr) {
int n = arr.length;
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j+1] = arr[j];
j--;
}
arr[j+1] = key;
}
}
- 快速排序(常用高效)
public static void quickSort(int[] arr, int left, int right) {
if (left >= right) return;
int i = left, j = right, pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot) j--;
arr[i] = arr[j];
while (i < j && arr[i] <= pivot) i++;
arr[j] = arr[i];
}
arr[i] = pivot;
quickSort(arr, left, i-1);
quickSort(arr, i+1, right);
}