Быстрая сортировка, сортировка Хоара - quicksort — введение в Java 031 #
(В разработке)
import java.util.Arrays;
public class QuickSort {
public static void quickSort(int[] array, int low, int high) {
if (array.length == 0)
return; //завершить выполнение, если длина массива равна 0
if (low >= high)
return;//завершить выполнение если уже нечего делить
// выбрать опорный элемент
int middle = low + (high - low) / 2;
int opora = array[middle];
// разделить на подмассивы, который больше и меньше опорного элемента
int i = low, j = high;
while (i <= j) {
while (array[i] < opora) {
i++;
}
while (array[j] > opora) {
j--;
}
if (i <= j) {//меняем местами
int temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
// вызов рекурсии для сортировки левой и правой части
if (low < j)
quickSort(array, low, j);
if (high > i)
quickSort(array, i, high);
}
public static void main(String[] args) {
int[] x = {8, 0, 4, 7, 3, 7, 10, 12, -3};
System.out.println("Было");
System.out.println(Arrays.toString(x));
int low = 0;
int high = x.length - 1;
quickSort(x, low, high);
System.out.println("Стало");
System.out.println(Arrays.toString(x));
}
}
- https://otus.ru/nest/post/788/
- https://www.youtube.com/watch?v=eNUM23f6g-s
- https://www.youtube.com/watch?v=9CBRBSWTl-E
- https://www.youtube.com/watch?v=PrxjH8R-kE8
- https://www.youtube.com/watch?v=wWjPUoWcjJo&list=PL58qjcU5nk8vl5zPGFSTG0hLQ9YGFKp0p&index=6
- https://www.codeflow.site/ru/article/java-quicksort
- https://java-master.com/%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC-%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B9-%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8-quick-sort-%D0%B2-java/
- Быстрая сортировка