qSort
- public static void quickSort(int[] data) {
- quickSort(data, 0, data.length);
- }
- public static void quickSort(int[] data, int from, int to) {
- if (to - from <= 1) return;
- // Выбираем опорный элемент
- int e = data[from];
- int low = from, high = to;
- // Фильтруем массив
- while (low < high) {
- while (low < high && data[--high] >= e);
- data[low] = data[high];
- while (low < high && data[++low] <= e);
- data[high] = data[low];
- }
- data[low] = e;
- // Сортируем левую и правую половину
- quickSort(data, from, low);
- quickSort(data, low + 1, to);
- }
Каноничный рекурсивный qSort