//快排
package com.example.demo;
import java.util.Arrays;
/**
* @author zhangjt
* @date 2021-01-20
* @Description:
*/
public class QuickSort {
public static void main(String[] args) {
int[] ints = {9, 8, 7, 6, 5, 4, 3, 2, 1, 100};
mySort(ints, 0, ints.length - 1);
System.out.println(Arrays.toString(ints));
}
private static void mySort(int[] ints, int left, int right) {
if (left >= right) return;
//先排序获取中点
int mid = mySortSwap(ints, left, right);
//排序左边数据
mySort(ints, left, mid);
//排序右边数据
mySort(ints, mid + 1, right);
}
private static int mySortSwap(int[] ints, int left, int right) {
int value = ints[left];
while (right > left) {
while (right > left && ints[right] >= value) {
right--;
}
ints[left] = ints[right];
while (right > left && value > ints[left]) {
left++;
}
ints[right] = ints[left];
}
ints[left] = value;
return left;
}
}
package com.example.demo;
import java.util.Arrays;
/**
* @author zhangjt
* @date 2021-01-20
* @Description:
*/
public class GBSort {
public static void main(String[] args) {
int[] array = {9, 8, 7, 6, 5, 4, 3, 2, 1, 100};
gbSort(array, 0, array.length - 1);
System.out.println(Arrays.toString(array));
}
private static void gbSort(int[] array, int left, int right) {
if (left >= right) return;
int mid = (left + right) / 2;
//先分组
gbSort(array, left, mid);
gbSort(array, mid + 1, right);
//再排序
gbSortSwap(array, left, right);
}
private static void gbSortSwap(int[] array, int left, int right) {
int mid = (left + right) / 2;
int midR = mid + 1;
int l = left;
int[] tmp = new int[right - left + 1];
int index = 0;
while (left <= mid && midR <= right) {
tmp[index++] = array[left] > array[midR] ? array[midR++] : array[left++];
}
while (left <= mid) {
tmp[index++] = array[left++];
}
while (midR <= right) {
tmp[index++] = array[midR++];
}
for (int i = 0; i < index; i++) {
array[l++] = tmp[i];
}
}
}
package com.example.demo; import java.util.Arrays; /** * @author zhangjt * @date 2021-01-21 * @Description: */ public class InsertSort { public static void main(String[] args) { int[] array = new int[]{9, 8, 3, 5, 6, -1, 100}; for (int i = 1; i < array.length; i++) { int v = array[i]; int j = i - 1; for (; j >= 0; j--) { if (v < array[j]) { array[j + 1] = array[j]; } else { break; } } array[j + 1] = v; } System.out.println(Arrays.toString(array)); } }