qSort

  1. public static void quickSort(int[] data) {
  2.     quickSort(data, 0, data.length);
  3. }
  4.  
  5. public static void quickSort(int[] data, int from, int to) {
  6.     if (to - from <= 1) return;
  7.  
  8.     // Выбираем опорный элемент
  9.     int e = data[from];
  10.     int low = from, high = to;
  11.  
  12.     // Фильтруем массив
  13.     while (low < high) {
  14.         while (low < high && data[--high] >= e);
  15.         data[low] = data[high];
  16.         while (low < high && data[++low] <= e);
  17.         data[high] = data[low];
  18.     }
  19.     data[low] = e;
  20.  
  21.     // Сортируем левую и правую половину
  22.     quickSort(data, from, low);
  23.     quickSort(data, low + 1, to);
  24. }
Каноничный рекурсивный qSort

Реклама

Мы в соцсетях

tw tg yt gt