private void ssInsertionSort(int pa, int first, int last, int depth) { final int[] SA = this.SA; int i, j; // pointer within SA int t; int r; for (i = last - 2; first <= i; --i) { for (t = SA[i], j = i + 1; 0 < (r = ssCompare(pa + t, pa + SA[j], depth));) { do { SA[j - 1] = SA[j]; } while (++j < last && SA[j] < 0); if (last <= j) { break; } } if (r == 0) { SA[j] = ~SA[j]; } SA[j - 1] = t; } }
private void ssInsertionSort(int pa, int first, int last, int depth) { final int[] SA = this.SA; int i, j; // pointer within SA int t; int r; for (i = last - 2; first <= i; --i) { for (t = SA[i], j = i + 1; 0 < (r = ssCompare(pa + t, pa + SA[j], depth));) { do { SA[j - 1] = SA[j]; } while (++j < last && SA[j] < 0); if (last <= j) { break; } } if (r == 0) { SA[j] = ~SA[j]; } SA[j - 1] = t; } }
private void ssInsertionSort(int pa, int first, int last, int depth) { final int[] SA = this.SA; int i, j; // pointer within SA int t; int r; for (i = last - 2; first <= i; --i) { for (t = SA[i], j = i + 1; 0 < (r = ssCompare(pa + t, pa + SA[j], depth));) { do { SA[j - 1] = SA[j]; } while (++j < last && SA[j] < 0); if (last <= j) { break; } } if (r == 0) { SA[j] = ~SA[j]; } SA[j - 1] = t; } }
private void ssMergeCheckEqual(final int pa, final int depth, final int a) { final int[] SA = this.SA; if (0 <= SA[a] && ssCompare(pa + getIDX(SA[a - 1]), pa + SA[a], depth) == 0) { SA[a] = ~SA[a]; } }
private void ssMergeCheckEqual(final int pa, final int depth, final int a) { final int[] SA = this.SA; if (0 <= SA[a] && ssCompare(pa + getIDX(SA[a - 1]), pa + SA[a], depth) == 0) { SA[a] = ~SA[a]; } }
private void ssMergeCheckEqual(final int pa, final int depth, final int a) { final int[] SA = this.SA; if (0 <= SA[a] && ssCompare(pa + getIDX(SA[a - 1]), pa + SA[a], depth) == 0) { SA[a] = ~SA[a]; } }
r = ssCompare(pa + buf[j], pa + SA[k], depth); if (r < 0) { do {
r = ssCompare(pa + buf[j], pa + SA[k], depth); if (r < 0) { do {
r = ssCompare(p1, p2, depth); if (r > 0) { if ((x & 1) != 0) {
r = ssCompare(p1, p2, depth); if (r > 0) { if ((x & 1) != 0) {
r = ssCompare(pa + buf[j], pa + SA[k], depth); if (r < 0) { do {
r = ssCompare(p1, p2, depth); if (r > 0) { if ((x & 1) != 0) {
len = half, half >>= 1) { if (ssCompare(pa + getIDX(SA[middle + m + half]), pa + getIDX(SA[middle - m - half - 1]), depth) < 0) { m += half + 1;
len = half, half >>= 1) { if (ssCompare(pa + getIDX(SA[middle + m + half]), pa + getIDX(SA[middle - m - half - 1]), depth) < 0) { m += half + 1;
len = half, half >>= 1) { if (ssCompare(pa + getIDX(SA[middle + m + half]), pa + getIDX(SA[middle - m - half - 1]), depth) < 0) { m += half + 1;
private void ssInsertionSort(int pa, int first, int last, int depth) { final int[] SA = this.SA; int i, j; // pointer within SA int t; int r; for (i = last - 2; first <= i; --i) { for (t = SA[i], j = i + 1; 0 < (r = ssCompare(pa + t, pa + SA[j], depth));) { do { SA[j - 1] = SA[j]; } while (++j < last && SA[j] < 0); if (last <= j) { break; } } if (r == 0) { SA[j] = ~SA[j]; } SA[j - 1] = t; } }
private void ssMergeCheckEqual(final int pa, final int depth, final int a) { final int[] SA = this.SA; if (0 <= SA[a] && ssCompare(pa + getIDX(SA[a - 1]), pa + SA[a], depth) == 0) { SA[a] = ~SA[a]; } }
private void ssMergeCheckEqual(final int pa, final int depth, final int a) { final int[] SA = this.SA; if (0 <= SA[a] && ssCompare(pa + getIDX(SA[a - 1]), pa + SA[a], depth) == 0) { SA[a] = ~SA[a]; } }
private void ssMergeCheckEqual(final int pa, final int depth, final int a) { final int[] SA = this.SA; if (0 <= SA[a] && ssCompare(pa + getIDX(SA[a - 1]), pa + SA[a], depth) == 0) { SA[a] = ~SA[a]; } }
private void ssMergeCheckEqual(final int pa, final int depth, final int a) { final int[] SA = this.SA; if (0 <= SA[a] && ssCompare(pa + getIDX(SA[a - 1]), pa + SA[a], depth) == 0) { SA[a] = ~SA[a]; } }