基础排序算法
public class SortUtils {
//选择排序
public static int[] choiceSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
swap(arr, i, j);
}
}
}
return arr;
}
//冒泡排序
public static int[] bubbleSort(int[] arr) {
for (int i = arr.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr, j, j + 1);
}
}
}
return arr;
}
//插入排序
public static int[] insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
for (int j = i; j > 0 && less(arr[j], arr[j - 1]); j--) {
swap(arr, j, j - 1);
}
}
return arr;
}
//希尔排序
public static int[] shellSort(int[] arr) {
int N = arr.length;
int h = 1;
while (h < N / 3) {
h = 3 * h + 1;
}
while (h >= 1) {
//将数组变为h的有序
for (int i = h; i < N; i++) {
for (int j = i; j >= h && less(arr[j], arr[j - h]); j -= h) {
swap(arr, j, j - h);
String result = "";
for (int x : arr) {
result = result + x;
}
}
}
h = h / 3;
}
return arr;
}
public static boolean less(int x, int y) {
return x < y;
}
public static void swap(int[] arr, int x, int y) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}