Home | History | Annotate | Download | only in lib

Lines Matching full:last

79 tr_insertionsort(const saidx_t *ISAd, saidx_t *first, saidx_t *last) {
83 for(a = first + 1; a < last; ++a) {
167 tr_pivot(const saidx_t *ISAd, saidx_t *first, saidx_t *last) {
171 t = last - first;
176 return tr_median3(ISAd, first, middle, last - 1);
179 return tr_median5(ISAd, first, first + t, middle, last - 1 - t, last - 1);
185 last = tr_median3(ISAd, last - 1 - (t << 1), last - 1 - t, last - 1);
186 return tr_median3(ISAd, first, middle, last);
223 saidx_t *first, saidx_t *middle, saidx_t *last,
229 for(b = middle - 1; (++b < last) && ((x = ISAd[*b]) == v);) { }
230 if(((a = b) < last) && (x < v)) {
231 for(; (++b < last) && ((x = ISAd[*b]) <= v);) {
235 for(c = last; (b < --c) && ((x = ISAd[*c]) == v);) { }
255 if((s = d - c) > (t = last - d - 1)) { s = t; }
256 for(e = b, f = last - s; 0 < s; --s, ++e, ++f) { SWAP(*e, *f); }
257 first += (b - a), last -= (d - c);
259 *pa = first, *pb = last;
265 saidx_t *first, saidx_t *a, saidx_t *b, saidx_t *last,
279 for(c = last - 1, e = d + 1, d = b; e < d; --c) {
290 saidx_t *first, saidx_t *a, saidx_t *b, saidx_t *last,
315 for(c = last - 1, e = d + 1, d = b; e < d; --c) {
328 saidx_t *SA, saidx_t *first, saidx_t *last,
339 for(ssize = 0, limit = tr_ilg(last - first);;) {
344 tr_partition(ISAd - incr, first, first, last, &a, &b, last - SA - 1);
347 if(a < last) {
350 if(b < last) {
357 STACK_PUSH5(ISAd - incr, first, last, -2, trlink);
360 if((a - first) <= (last - b)) {
362 STACK_PUSH5(ISAd, b, last, tr_ilg(last - b), trlink);
363 last = a, limit = tr_ilg(a - first);
364 } else if(1 < (last - b)) {
365 first = b, limit = tr_ilg(last - b);
367 STACK_POP5(ISAd, first, last, limit, trlink);
370 if(1 < (last - b)) {
372 first = b, limit = tr_ilg(last - b);
374 last = a, limit = tr_ilg(a - first);
376 STACK_POP5(ISAd, first, last, limit, trlink);
383 tr_copy(ISA, SA, first, a, b, last, ISAd - ISA);
386 tr_partialcopy(ISA, SA, first, a, b, last, ISAd - ISA);
388 STACK_POP5(ISAd, first, last, limit, trlink);
393 do { ISA[*a] = a - SA; } while((++a < last) && (0 <= *a));
396 if(first < last) {
399 if(++a < last) { for(b = first, v = a - SA - 1; b < a; ++b) { ISA[*b] = v; } }
403 if((a - first) <= (last - a)) {
404 STACK_PUSH5(ISAd, a, last, -3, trlink);
405 ISAd += incr, last = a, limit = next;
407 if(1 < (last - a)) {
411 ISAd += incr, last = a, limit = next;
416 if(1 < (last - a)) {
419 STACK_POP5(ISAd, first, last, limit, trlink);
423 STACK_POP5(ISAd, first, last, limit, trlink);
429 if((last - first) <= TR_INSERTIONSORT_THRESHOLD) {
430 tr_insertionsort(ISAd, first, last);
436 tr_heapsort(ISAd, first, last - first);
437 for(a = last - 1; first < a; a = b) {
445 a = tr_pivot(ISAd, first, last);
450 tr_partition(ISAd, first, first + 1, last, &a, &b, v);
451 if((last - first) != (b - a)) {
456 if(b < last) { for(c = a, v = b - SA - 1; c < b; ++c) { ISA[*c] = v; } }
460 if((a - first) <= (last - b)) {
461 if((last - b) <= (b - a)) {
464 STACK_PUSH5(ISAd, b, last, limit, trlink);
465 last = a;
466 } else if(1 < (last - b)) {
470 ISAd += incr, first = a, last = b, limit = next;
474 STACK_PUSH5(ISAd, b, last, limit, trlink);
476 last = a;
478 STACK_PUSH5(ISAd, b, last, limit, trlink);
479 ISAd += incr, first = a, last = b, limit = next;
482 STACK_PUSH5(ISAd, b, last, limit, trlink);
484 ISAd += incr, first = a, last = b, limit = next;
488 if(1 < (last - b)) {
494 last = a;
496 ISAd += incr, first = a, last = b, limit = next;
498 } else if((last - b) <= (b - a)) {
499 if(1 < (last - b)) {
505 ISAd += incr, first = a, last = b, limit = next;
509 STACK_PUSH5(ISAd, b, last, limit, trlink);
510 ISAd += incr, first = a, last = b, limit = next;
515 if((a - first) <= (last - b)) {
517 STACK_PUSH5(ISAd, b, last, limit, trlink);
518 last = a;
519 } else if(1 < (last - b)) {
522 STACK_POP5(ISAd, first, last, limit, trlink);
525 if(1 < (last - b)) {
529 last = a;
531 STACK_POP5(ISAd, first, last
536 if(trbudget_check(budget, last - first)) {
537 limit = tr_ilg(last - first), ISAd += incr;
540 STACK_POP5(ISAd, first, last, limit, trlink);
557 saidx_t *first, *last;
571 last = SA + ISA[t] + 1;
572 if(1 < (last - first)) {
574 tr_introsort(ISA, ISAd, SA, first, last, &budget);
576 else { skip = first - last; }
577 } else if((last - first) == 1) {
580 first = last;