冒泡排序
public void bubbleSort(int[] arr) {
boolean swapped = true;
for (int i = 0; i < arr.length - 1 && swapped; i++) {
swapped = false;
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
swapped = true;
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
快速排序
public void quickSort(int[] arr, int l, int r) {
while (l < r) {
int pivot = partition(arr, l, r);
if (pivot - l < r - pivot) {
quickSort(arr, l, pivot - 1);
l = pivot + 1;
} else {
quickSort(arr, pivot + 1, r);
r = pivot - 1;
}
}
}
public int partition(int[] arr, int l, int r) {
int random = (int) (Math.random() * (r - l + 1) + l);
swap(arr, random, l);
int i = l, j = r;
while (i < j) {
while (i < j && arr[j] >= arr[l]) j--;
while (i < j && arr[i] <= arr[l]) i++;
swap(arr, i, j);
}
swap(arr, l, i);
return i;
}
public void swap(int[] arr, int j, int k) {
int temp = arr[j];
arr[j] = arr[k];
arr[k] = temp;
}
归并排序
public void mergeSort(int[] arr, int l, int r) {
if (l >= r) {
return;
}
int mid = l + (r - l) / 2;
mergeSort(arr, l, mid);
mergeSort(arr, mid + 1, r);
int[] temp = new int[r - l + 1];
if (r + 1 - l >= 0) {
System.arraycopy(arr, l, temp, 0, r + 1 - l);
}
int i = 0, j = mid - l + 1;
for (int k = l; k <= r; k++) {
if (i == mid - l + 1) {
arr[k] = temp[j++];
} else if (j == r - l + 1 || temp[i] <= temp[j]) {
arr[k] = temp[i++];
} else {
arr[k] = temp[j++];
}
}
}
插入排序
public void insertedSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int temp = arr[i];
int j = i - 1;
for (; j >= 0; j--) {
if (arr[j] >= temp) {
arr[j + 1] = arr[j];
} else {
break;
}
arr[j] = temp;
}
}
}