void merge(int lo, int mid, int hi) { if (compare(mid - 1, mid) <= 0) { return; } lo = upper2(lo, mid, mid); hi = lower2(mid, hi, mid - 1); if (hi - mid <= mid - lo && hi - mid <= maxTempSlots) { mergeHi(lo, mid, hi); } else if (mid - lo <= maxTempSlots) { mergeLo(lo, mid, hi); } else { mergeInPlace(lo, mid, hi); } }
void merge(int lo, int mid, int hi) { if (compare(mid - 1, mid) <= 0) { return; } lo = upper2(lo, mid, mid); hi = lower2(mid, hi, mid - 1); if (hi - mid <= mid - lo && hi - mid <= maxTempSlots) { mergeHi(lo, mid, hi); } else if (mid - lo <= maxTempSlots) { mergeLo(lo, mid, hi); } else { mergeInPlace(lo, mid, hi); } }
void merge(int lo, int mid, int hi) { if (compare(mid - 1, mid) <= 0) { return; } lo = upper2(lo, mid, mid); hi = lower2(mid, hi, mid - 1); if (hi - mid <= mid - lo && hi - mid <= maxTempSlots) { mergeHi(lo, mid, hi); } else if (mid - lo <= maxTempSlots) { mergeLo(lo, mid, hi); } else { mergeInPlace(lo, mid, hi); } }
void merge(int lo, int mid, int hi) { if (compare(mid - 1, mid) <= 0) { return; } lo = upper2(lo, mid, mid); hi = lower2(mid, hi, mid - 1); if (hi - mid <= mid - lo && hi - mid <= maxTempSlots) { mergeHi(lo, mid, hi); } else if (mid - lo <= maxTempSlots) { mergeLo(lo, mid, hi); } else { mergeInPlace(lo, mid, hi); } }