public class Sort{
public static void main(String[] args) {
int[] array = new int[] { 34, 8, 64, 51, 32, 21 };
// InsertSort(array);//插入排序
// SheelSort(array);// 希尔排序
// QuickSort(array);// 快速排序
// BubbleSort(array);// 冒泡排序
ChoiceSort(array);// 选择排序
for (int n : array) {
System.out.print(n + " ");
}
}
public static void SheelSort(int[] array) {
int j;
for (int gap = array.length / 2; gap > 0; gap /= 2) {
for (int i = gap; i < array.length; i++) {
int tmp = array[i];
for (j = i; j >= gap && array[j] < array[j - gap]; j -= gap) {
array[j] = array[j - gap];
}
array[j] = tmp;
}
}
}
public static void InsertSort(int[] array) {
int j;
for (int i = 1; i < array.length; i++) {
int tmp = array[i];
for (j = i; j > 0 && array[j] < array[j - 1]; j--) {
array[j] = array[j - 1];
}
array[j] = tmp;
}
}
public static void QuickSort(int[] array) {
if (array.length != 0) {
Quick(array, 0, array.length - 1);
}
}
private static void Quick(int[] array, int low, int high) {
if (low < high) {
int mid = getMiddle(array, low, high);// 不推荐的做法(选取第一个元素作为枢纽元)
Quick(array, low, mid - 1);
Quick(array, mid + 1, high);
}
}
private static int getMiddle(int[] array, int low, int high) {
int tmp = array[low];
while (low < high) {
while (low < high && array[high] >= tmp) {
high--;
}
array[low] = array[high];
while (low < high && array[low] <= tmp) {
low++;
}
array[high] = array[low];
}
array[low] = tmp;
return low;
}
private static void BubbleSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
int tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
}
}
}
}
public static void ChoiceSort(int[] array) {
if (array == null || array.length <= 0) {
return;
}
for (int i = 0; i < array.length; i++) {
int min = i;
for (int j = i + 1; j < array.length; j++) {
if (array[min] > array[j]) {
min = j;
}
}
if (i != min) {
int tmp = array[min];
array[min] = array[i];
array[i] = tmp;
}
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-964088.html