@Override public final void sort(int from, int to) { checkRange(from, to); quicksort(from, to, 2 * MathUtil.log(to - from, 2)); }
void quicksort(int from, int to, int maxDepth) { if (to - from < BINARY_SORT_THRESHOLD) { binarySort(from, to); return; } else if (--maxDepth < 0) { heapSort(from, to); return; if (compare(from, mid) > 0) { swap(from, mid); if (compare(mid, to - 1) > 0) { swap(mid, to - 1); if (compare(from, mid) > 0) { swap(from, mid); setPivot(mid); for (;;) { while (comparePivot(right) < 0) { --right; while (left < right && comparePivot(left) >= 0) { ++left; swap(left, right); --right; } else { quicksort(from, left + 1, maxDepth); quicksort(left + 1, to, maxDepth);
@Override protected int compare(int i, int j) { setPivot(i); return comparePivot(j); } }
void quicksort(int from, int to, int maxDepth) { if (to - from < THRESHOLD) { insertionSort(from, to); return; } else if (--maxDepth < 0) { heapSort(from, to); return; if (compare(from, mid) > 0) { swap(from, mid); if (compare(mid, to - 1) > 0) { swap(mid, to - 1); if (compare(from, mid) > 0) { swap(from, mid); setPivot(mid); for (;;) { while (comparePivot(right) < 0) { --right; while (left < right && comparePivot(left) >= 0) { ++left; swap(left, right); --right; } else { quicksort(from, left + 1, maxDepth); quicksort(left + 1, to, maxDepth);
@Override public final void sort(int from, int to) { checkRange(from, to); quicksort(from, to, ceilLog2(to - from)); }
void quicksort(int from, int to, int maxDepth) { if (to - from < THRESHOLD) { insertionSort(from, to); return; } else if (--maxDepth < 0) { heapSort(from, to); return; if (compare(from, mid) > 0) { swap(from, mid); if (compare(mid, to - 1) > 0) { swap(mid, to - 1); if (compare(from, mid) > 0) { swap(from, mid); setPivot(mid); for (;;) { while (comparePivot(right) < 0) { --right; while (left < right && comparePivot(left) >= 0) { ++left; swap(left, right); --right; } else { quicksort(from, left + 1, maxDepth); quicksort(left + 1, to, maxDepth);
@Override public final void sort(int from, int to) { checkRange(from, to); quicksort(from, to, ceilLog2(to - from)); }
@Override protected int compare(int i, int j) { setPivot(i); return comparePivot(j); } }
void quicksort(int from, int to, int maxDepth) { if (to - from < BINARY_SORT_THRESHOLD) { binarySort(from, to); return; } else if (--maxDepth < 0) { heapSort(from, to); return; if (compare(from, mid) > 0) { swap(from, mid); if (compare(mid, to - 1) > 0) { swap(mid, to - 1); if (compare(from, mid) > 0) { swap(from, mid); setPivot(mid); for (;;) { while (comparePivot(right) < 0) { --right; while (left < right && comparePivot(left) >= 0) { ++left; swap(left, right); --right; } else { quicksort(from, left + 1, maxDepth); quicksort(left + 1, to, maxDepth);
@Override public final void sort(int from, int to) { checkRange(from, to); quicksort(from, to, 2 * MathUtil.log(to - from, 2)); }