八大排序算法
快速排序算法
package com.test.algorithm;
import java.util.Arrays;
import java.util.stream.Collectors;
public class QuickSort {
public static void main(String[] args) {
int[] array = new int[]{5, 2, 8, 4, 22, 31, 0, 1, 9};
System.out.println("排序前:");
System.out.println(Arrays.toString(array));
System.out.println("----------------------------------");
System.out.println("排序中:");
quickSort(array, 0, array.length - 1);
System.out.println("----------------------------------");
System.out.println("排序后:");
System.out.println(Arrays.toString(array));
}
public static void quickSort(int[] array, int left, int right) {
if (left >= right) return;
int temp = array[left];
int i = left;
int j = right;
while (i < j) {
while (array[j] >= temp && j > i) {
j--;
}
while (array[i] <= temp && j > i) {
i++;
}
if (i != j) {
swap(array, i, j);
}
}
if (left != i) {
swap(array, left, i);
}
quickSort(array, j + 1, right);
quickSort(array, left, i);
}
public static void swap(int[] array, int left, int right) {
int temp = array[left];
array[left] = array[right];
array[right] = temp;
System.out.println(Arrays.toString(array));
}
}
运行结果
排序前:
[5, 2, 8, 4, 22, 31, 0, 1, 9]
----------------------------------
排序中:
[5, 2, 1, 4, 22, 31, 0, 8, 9]
[5, 2, 1, 4, 0, 31, 22, 8, 9]
[0, 2, 1, 4, 5, 31, 22, 8, 9]
[0, 2, 1, 4, 5, 9, 22, 8, 31]
[0, 2, 1, 4, 5, 9, 8, 22, 31]
[0, 2, 1, 4, 5, 8, 9, 22, 31]
[0, 1, 2, 4, 5, 8, 9, 22, 31]
----------------------------------
排序后:
[0, 1, 2, 4, 5, 8, 9, 22, 31]