private void trSort(final int isa, final int n, final int depth) { final int[] SA = this.SA; int first = 0, last; int t; if (-n < SA[0]) { TRBudget budget = new TRBudget(n, trLog(n) * 2 / 3 + 1); do { if ((t = SA[first]) < 0) { first -= t; } else { last = SA[isa + t] + 1; if (1 < last - first) { trIntroSort(isa, isa + depth, isa + n, first, last, budget, n); if (budget.chance == 0) { /* Switch to Larsson-Sadakane sorting algorithm */ if (0 < first) { SA[0] = -first; } lsSort(isa, n, depth); break; } } first = last; } } while (first < n); } }
private void trSort(final int isa, final int n, final int depth) { final int[] SA = this.SA; int first = 0, last; int t; if (-n < SA[0]) { TRBudget budget = new TRBudget(n, trLog(n) * 2 / 3 + 1); do { if ((t = SA[first]) < 0) { first -= t; } else { last = SA[isa + t] + 1; if (1 < last - first) { trIntroSort(isa, isa + depth, isa + n, first, last, budget, n); if (budget.chance == 0) { /* Switch to Larsson-Sadakane sorting algorithm */ if (0 < first) { SA[0] = -first; } lsSort(isa, n, depth); break; } } first = last; } } while (first < n); } }
private void trSort(final int isa, final int n, final int depth) { final int[] SA = this.SA; int first = 0, last; int t; if (-n < SA[0]) { TRBudget budget = new TRBudget(n, trLog(n) * 2 / 3 + 1); do { if ((t = SA[first]) < 0) { first -= t; } else { last = SA[isa + t] + 1; if (1 < last - first) { trIntroSort(isa, isa + depth, isa + n, first, last, budget, n); if (budget.chance == 0) { /* Switch to Larsson-Sadakane sorting algorithm */ if (0 < first) { SA[0] = -first; } lsSort(isa, n, depth); break; } } first = last; } } while (first < n); } }
for (ssize = 0, limit = trLog(last - first);;) { if (limit < 0) { if (limit == -1) { if (a - first <= last - b) { if (1 < a - first) { stack[ssize++] = new StackEntry(isaD, b, last, trLog(last - b)); last = a; limit = trLog(a - first); } else if (1 < last - b) { first = b; limit = trLog(last - b); } else { if (ssize == 0) { stack[ssize++] = new StackEntry(isaD, first, a, trLog(a - first)); first = b; limit = trLog(last - b); } else if (1 < a - first) { last = a; limit = trLog(a - first); } else { if (ssize == 0) { SA[a] = ~SA[a]; } while (SA[++a] < 0); next = SA[isa + SA[a]] != SA[isaD + SA[a]] ? trLog(a - first + 1) : -1; if (++a < last) { for (b = first, v = a - 1; b < a; ++b) { next = SA[isa + SA[a]] != v ? trLog(b - a) : -1;
for (ssize = 0, limit = trLog(last - first);;) { if (limit < 0) { if (limit == -1) { if (a - first <= last - b) { if (1 < a - first) { stack[ssize++] = new StackEntry(isaD, b, last, trLog(last - b)); last = a; limit = trLog(a - first); } else if (1 < last - b) { first = b; limit = trLog(last - b); } else { if (ssize == 0) { stack[ssize++] = new StackEntry(isaD, first, a, trLog(a - first)); first = b; limit = trLog(last - b); } else if (1 < a - first) { last = a; limit = trLog(a - first); } else { if (ssize == 0) { SA[a] = ~SA[a]; } while (SA[++a] < 0); next = SA[isa + SA[a]] != SA[isaD + SA[a]] ? trLog(a - first + 1) : -1; if (++a < last) { for (b = first, v = a - 1; b < a; ++b) { next = SA[isa + SA[a]] != v ? trLog(b - a) : -1;
for (ssize = 0, limit = trLog(last - first);;) { if (limit < 0) { if (limit == -1) { if (a - first <= last - b) { if (1 < a - first) { stack[ssize++] = new StackEntry(isaD, b, last, trLog(last - b)); last = a; limit = trLog(a - first); } else if (1 < last - b) { first = b; limit = trLog(last - b); } else { if (ssize == 0) { stack[ssize++] = new StackEntry(isaD, first, a, trLog(a - first)); first = b; limit = trLog(last - b); } else if (1 < a - first) { last = a; limit = trLog(a - first); } else { if (ssize == 0) { SA[a] = ~SA[a]; } while (SA[++a] < 0); next = SA[isa + SA[a]] != SA[isaD + SA[a]] ? trLog(a - first + 1) : -1; if (++a < last) { for (b = first, v = a - 1; b < a; ++b) { next = SA[isa + SA[a]] != v ? trLog(b - a) : -1;
int ssize; for (ssize = 0, limit = trLog(last - first);;) { if (last - first <= INSERTIONSORT_THRESHOLD) { if (1 < last - first) {
int ssize; for (ssize = 0, limit = trLog(last - first);;) { if (last - first <= INSERTIONSORT_THRESHOLD) { if (1 < last - first) {
int ssize; for (ssize = 0, limit = trLog(last - first);;) { if (last - first <= INSERTIONSORT_THRESHOLD) { if (1 < last - first) {
private void trSort(final int isa, final int n, final int depth) { final int[] SA = this.SA; int first = 0, last; int t; if (-n < SA[0]) { TRBudget budget = new TRBudget(n, trLog(n) * 2 / 3 + 1); do { if ((t = SA[first]) < 0) { first -= t; } else { last = SA[isa + t] + 1; if (1 < last - first) { trIntroSort(isa, isa + depth, isa + n, first, last, budget, n); if (budget.chance == 0) { /* Switch to Larsson-Sadakane sorting algorithm */ if (0 < first) { SA[0] = -first; } lsSort(isa, n, depth); break; } } first = last; } } while (first < n); } }
private void trSort(final int isa, final int n, final int depth) { final int[] SA = this.SA; int first = 0, last; int t; if (-n < SA[0]) { TRBudget budget = new TRBudget(n, trLog(n) * 2 / 3 + 1); do { if ((t = SA[first]) < 0) { first -= t; } else { last = SA[isa + t] + 1; if (1 < last - first) { trIntroSort(isa, isa + depth, isa + n, first, last, budget, n); if (budget.chance == 0) { /* Switch to Larsson-Sadakane sorting algorithm */ if (0 < first) { SA[0] = -first; } lsSort(isa, n, depth); break; } } first = last; } } while (first < n); } }
private void trSort(final int isa, final int n, final int depth) { final int[] SA = this.SA; int first = 0, last; int t; if (-n < SA[0]) { TRBudget budget = new TRBudget(n, trLog(n) * 2 / 3 + 1); do { if ((t = SA[first]) < 0) { first -= t; } else { last = SA[isa + t] + 1; if (1 < last - first) { trIntroSort(isa, isa + depth, isa + n, first, last, budget, n); if (budget.chance == 0) { /* Switch to Larsson-Sadakane sorting algorithm */ if (0 < first) { SA[0] = -first; } lsSort(isa, n, depth); break; } } first = last; } } while (first < n); } }
private void trSort(final int isa, final int n, final int depth) { final int[] SA = this.SA; int first = 0, last; int t; if (-n < SA[0]) { TRBudget budget = new TRBudget(n, trLog(n) * 2 / 3 + 1); do { if ((t = SA[first]) < 0) { first -= t; } else { last = SA[isa + t] + 1; if (1 < last - first) { trIntroSort(isa, isa + depth, isa + n, first, last, budget, n); if (budget.chance == 0) { /* Switch to Larsson-Sadakane sorting algorithm */ if (0 < first) { SA[0] = -first; } lsSort(isa, n, depth); break; } } first = last; } } while (first < n); } }
for (ssize = 0, limit = trLog(last - first);;) { if (limit < 0) { if (limit == -1) { if (a - first <= last - b) { if (1 < a - first) { stack[ssize++] = new StackEntry(isaD, b, last, trLog(last - b)); last = a; limit = trLog(a - first); } else if (1 < last - b) { first = b; limit = trLog(last - b); } else { if (ssize == 0) { stack[ssize++] = new StackEntry(isaD, first, a, trLog(a - first)); first = b; limit = trLog(last - b); } else if (1 < a - first) { last = a; limit = trLog(a - first); } else { if (ssize == 0) { SA[a] = ~SA[a]; } while (SA[++a] < 0); next = SA[isa + SA[a]] != SA[isaD + SA[a]] ? trLog(a - first + 1) : -1; if (++a < last) { for (b = first, v = a - 1; b < a; ++b) { next = SA[isa + SA[a]] != v ? trLog(b - a) : -1;
for (ssize = 0, limit = trLog(last - first);;) { if (limit < 0) { if (limit == -1) { if (a - first <= last - b) { if (1 < a - first) { stack[ssize++] = new StackEntry(isaD, b, last, trLog(last - b)); last = a; limit = trLog(a - first); } else if (1 < last - b) { first = b; limit = trLog(last - b); } else { if (ssize == 0) { stack[ssize++] = new StackEntry(isaD, first, a, trLog(a - first)); first = b; limit = trLog(last - b); } else if (1 < a - first) { last = a; limit = trLog(a - first); } else { if (ssize == 0) { SA[a] = ~SA[a]; } while (SA[++a] < 0); next = SA[isa + SA[a]] != SA[isaD + SA[a]] ? trLog(a - first + 1) : -1; if (++a < last) { for (b = first, v = a - 1; b < a; ++b) { next = SA[isa + SA[a]] != v ? trLog(b - a) : -1;
for (ssize = 0, limit = trLog(last - first);;) { if (limit < 0) { if (limit == -1) { if (a - first <= last - b) { if (1 < a - first) { stack[ssize++] = new StackEntry(isaD, b, last, trLog(last - b)); last = a; limit = trLog(a - first); } else if (1 < last - b) { first = b; limit = trLog(last - b); } else { if (ssize == 0) { stack[ssize++] = new StackEntry(isaD, first, a, trLog(a - first)); first = b; limit = trLog(last - b); } else if (1 < a - first) { last = a; limit = trLog(a - first); } else { if (ssize == 0) { SA[a] = ~SA[a]; } while (SA[++a] < 0); next = SA[isa + SA[a]] != SA[isaD + SA[a]] ? trLog(a - first + 1) : -1; if (++a < last) { for (b = first, v = a - 1; b < a; ++b) { next = SA[isa + SA[a]] != v ? trLog(b - a) : -1;
int ssize; for (ssize = 0, limit = trLog(last - first);;) { if (last - first <= INSERTIONSORT_THRESHOLD) { if (1 < last - first) {
int ssize; for (ssize = 0, limit = trLog(last - first);;) { if (last - first <= INSERTIONSORT_THRESHOLD) { if (1 < last - first) {
int ssize; for (ssize = 0, limit = trLog(last - first);;) { if (last - first <= INSERTIONSORT_THRESHOLD) { if (1 < last - first) {
int ssize; for (ssize = 0, limit = trLog(last - first);;) { if (last - first <= INSERTIONSORT_THRESHOLD) { if (1 < last - first) {