privatestatic <T> voidsort(T[] data, Comparator<T> comparator, int left, int right){ if (left >= right) { return; } int p = partition(data, comparator, left, right); sort(data, comparator, left, p - 1); sort(data, comparator, p + 1, right); }
privatestatic <T> intpartition(T[] data, Comparator<T> comparator, int left, int right){ int j = left; T v = data[left]; for (int i = left + 1; i <= right; i++) { if (comparator.compare(data[i], v) < 0) { ++j; swap(data, i, j); } } swap(data, left, j); return j; }
privatestatic <T> voidswap(T[] data, int i, int j){ T temp = data[i]; data[i] = data[j]; data[j] = temp; }
privatestatic <T> voidsort(T[] data, Comparator<T> comparator, int left, int right){ if (left >= right) { return; } int p = partition(data, comparator, left, right); sort(data, comparator, left, p - 1); sort(data, comparator, p + 1, right); }
privatestatic <T> intpartition(T[] data, Comparator<T> comparator, int left, int right){ swap(data, left, random.nextInt(right - left + 1) + left); int j = left; T v = data[left]; for (int i = left + 1; i <= right; i++) { if (comparator.compare(data[i], v) < 0) { ++j; swap(data, i, j); } } swap(data, left, j); return j; }
privatestatic <T> voidswap(T[] data, int i, int j){ T temp = data[i]; data[i] = data[j]; data[j] = temp; }
privatestatic <T> voidsort(T[] data, Comparator<T> comparator, int left, int right){ if (left >= right) { return; } int p = partition(data, comparator, left, right); sort(data, comparator, left, p - 1); sort(data, comparator, p + 1, right); }
privatestatic <T> intpartition(T[] data, Comparator<T> comparator, int left, int right){ swap(data, left, random.nextInt(right - left + 1) + left); int i = left + 1; int j = right; T v = data[left]; while (true) { while (i <= right && comparator.compare(data[i], v) < 0) { i++; } while (j >= left + 1 && comparator.compare(data[j], v) > 0) { j--; } if (i >= j) { break; } swap(data, i, j); i++; j--; } swap(data, left, j); return j; }
privatestatic <T> voidswap(T[] data, int i, int j){ T temp = data[i]; data[i] = data[j]; data[j] = temp; }