24 static void iiqst(
int *,
int *);
54 for (j = lo = base; lo++ < hi;) {
64 for (min = base; (hi = min += 1) < max;) {
65 while (*(--hi) > *
min);
66 if ((hi += 1) !=
min) {
67 for (lo = min + 1; --lo >=
min;) {
69 for (i = j = lo; (j -= 1) >= hi; i = j)
91 mid = base + ((unsigned) lo>>1);
93 j = (*base > *mid ? base : mid);
96 j = (j == base ? mid : base);
109 for (i = base, j = max - 1;;) {
110 while (i < mid && *i <= *mid)
140 if ((lo = j - base) <= (hi = max - i)) {
183 for (j = lo = base; lo++ < hi;) {
193 for (min = base; (hi = min += 1) < max;) {
194 while (*(--hi) > *
min);
195 if ((hi += 1) !=
min) {
196 for (lo = min + 1; --lo >=
min;) {
198 for (i = j = lo; (j -= 1) >= hi; i = j)
207 static void iiqst(
int *base,
int *max)
221 mid = base + ((unsigned) lo>>1);
223 j = (*base > *mid ? base : mid);
226 j = (j == base ? mid : base);
239 for (i = base, j = max - 1;;) {
240 while (i < mid && *i <= *mid)
270 if ((lo = j - base) <= (hi = max - i)) {
313 for (j = lo = base; lo++ < hi;) {
323 for (min = base; (hi = min += 1) < max;) {
324 while ((--hi)->key > min->
key);
325 if ((hi += 1) !=
min) {
326 for (lo = min + 1; --lo >=
min;) {
328 for (i = j = lo; (j -= 1) >= hi; i = j)
338 for (i=0; i<n-1; i++)
339 if (base[i].key > base[i+1].key)
340 printf(
"Something went wrong!\n");
356 lo = (max - base)>>1;
358 mid = base + ((unsigned) lo>>1);
360 j = (base->
key > mid->
key ? base : mid);
363 j = (j == base ? mid : base);
376 for (i = base, j = max - 1;;) {
377 while (i < mid && i->key <= mid->key)
407 if ((lo = (j - base)>>1) <= (hi = (max - i)>>1)) {
443 keyvaliqst(base, max);
449 for (j = lo = base; lo++ < hi;) {
459 for (min = base; (hi = min += 1) < max;) {
460 while ((--hi)->key > min->
key || (hi->key == min->
key && hi->val > min->
val));
461 if ((hi += 1) !=
min) {
462 for (lo = min + 1; --lo >=
min;) {
464 for (i = j = lo; (j -= 1) >= hi; i = j)
484 lo = (max - base)>>1;
486 mid = base + ((unsigned) lo>>1);
488 j = (base->
key > mid->
key || (base->
key == mid->
key && base->
val > mid->
val) ? base : mid);
491 j = (j == base ? mid : base);
504 for (i = base, j = max - 1;;) {
505 while (i < mid && (i->
key < mid->key || (i->
key == mid->key && i->
val <= mid->val)))
508 if (mid->key < j->
key || (mid->key == j->
key && mid->val <= j->
val)) {
535 if ((lo = (j - base)>>1) <= (hi = (max - i)>>1)) {