English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在此示例中,我们将学习在Java中实现快速排序算法。
在学习Java中的快速排序算法之前,请确保您了解快速排序算法的工作原理。
//用Java快速排序 import java.util.Arrays; class Main { //根据数据轴划分数组 int partition(int array[], int low, int high) { //选择最后一个元素作为轴 int pivot = array[high]; //初始化第二个指针 int i = (low - 1); //把小于轴的元素放在左边 //大于枢轴右侧的枢轴 for (int j = low; j < high; j++) { //将所有元素与pivot进行比较 //交换大于pivot的元素 //元素小于pivot //按降序排序 // if (array[j] >= pivot) if (array[j] <= pivot) { //第二个指针递增。 //将较小的元素替换为较大的元素 i++; int temp = array[i]; array[i] = array[j]; array[j] = temp; } } //所以左边的元素更小 //右边的元素大于pivot int temp = array[i + 1]; array[i + 1] = array[high]; array[high] = temp; return (i + 1); } void quickSort(int array[], int low, int high) { if (low < high) { //选择轴位置并将所有元素放小 //左轴大于轴,右轴大于轴 int pi = partition(array, low, high); //排序轴左侧的元素 quickSort(array, low, pi - 1); //排序轴右侧的元素 quickSort(array, pi + 1, high); } } public static void main(String args[]) { //создать неупорядоченный массив int[] data = { 8, 7, 2, 1, 0, 9, 6 }; int size = data.length; //создать объект класса Main Main qs = new Main(); //передать первый и последний индексы массиву qs.quickSort(data, 0, size - 1); System.out.println("Сортированный массив:"); System.out.println(Arrays.toString(data)); } }
Вывод 1
Несортированный массив: [8, 7, 2, 1, 0, 9, 6] Сортированный массив: [0, 1, 2, 6, 7, 8, 9]
Здесь элементы массива сортируются по возрастанию. Если мы хотим отсортировать элементы по убыванию, то в цикле for метода Partition() мы можем изменить код следующим образом:
//изменить символ '<' на '>' if (array[j] >= pivot) {