// 快速排序
private static class Sort1 {
public static void sort() {
int[] a = { 43, 56, 1, 4, 56, 70, 133, 13, 2, 33, 6, 43, 42 };
System.out.println(Arrays.toString(a));
int len = a.length;
quickSort(a, 0, len - 1);
System.out.println(Arrays.toString(a));
}
public static void quickSort(int[] a, int left, int right) {
int index = 0;
if (left < right) {
index = position(a, left, right);
quickSort(a, left, index - 1);
quickSort(a, index + 1, right);
}
}
public static int position(int[] a, int left, int right) {
int lt = left + 1;
int rt = right;
while (lt <= rt) {
if (a[lt] > a[left]) {
if (a[rt] < a[left]) {
swap(a, lt, rt);
lt++;
rt--;
} else {
rt--;
}
} else {
lt++;
}
}
swap(a, left, lt - 1);
return lt - 1;
}
public static void swap(int[] a, int i, int j) {
if (i != j) {
a[i] = a[j];
a[j] = a[j];
a[i] = a[j];
}
}
}
// 冒泡排序
private static class Sort2 {
public static void sort() {
int[] a = { 43, 56, 1, 4, 56, 70, 133, 13, 2, 33, 6, 43, 42 };
System.out.println(Arrays.toString(a));
int len = a.length;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (a[j] > a[j + 1]) {
a[j] = a[j] ^ a[j + 1];
a[j + 1] = a[j] ^ a[j + 1];
a[j] = a[j] ^ a[j + 1];
}
}
}
System.out.println(Arrays.toString(a));
}
}
// 选择排序
private static class Sort3 {
public static void sort() {
int[] a = { 43, 56, 1, 4, 56, 70, 133, 13, 2, 33, 6, 43, 42 };
System.out.println(Arrays.toString(a));
int len = a.length;
int minIndex = 0;
for (int i = 0; i < len - 1; i++) {
minIndex = i;
for (int j = i + 1; j < len; j++) {
if (a[j] < a[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
a[i] = a[i] ^ a[minIndex];
a[minIndex] = a[i] ^ a[minIndex];
a[i] = a[i] ^ a[minIndex];
System.out.println(Arrays.toString(a));
}
}
System.out.println(Arrays.toString(a));
}
}
// 插入排序
private static class Sort4 {
public static void sort() {
int[] a = { 43, 56, 1, 4, 56, 70, 133, 13, 2, 33, 6, 43, 42 };
System.out.println(Arrays.toString(a));
int len = a.length;
for (int i = 1; i < len; i++) {
int prevIndex = i - 1;
int current = a[i];
while (prevIndex >= 0 && a[prevIndex] > current) {
a[prevIndex + 1] = a[prevIndex];
prevIndex--;
}
a[prevIndex + 1] = current;
}
System.out.println(Arrays.toString(a));
}
}