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)
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)) {
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;;) {
535 if ((lo = (j - base)>>1) <= (hi = (
max - i)>>1)) {
void iintsort(int n, int *base)
void iidxsort(int n, idxtype *base)
void ikeyvalsort(int n, KeyValueType *base)
static void siqst(idxtype *, idxtype *)
void ikeysort(int n, KeyValueType *base)
static void iiqst(int *, int *)
static void keyiqst(KeyValueType *, KeyValueType *)
static void keyvaliqst(KeyValueType *, KeyValueType *)
void swap(optional< T > &x, optional< T > &y) noexcept(noexcept(x.swap(y)))