PHP 7.4.33
Preview: quickselect.js Size: 1.52 KB
/var/www/gtechmarathon2026.bitkit.dk/httpdocs/node_modules/d3-array/src/quickselect.js
import {ascendingDefined, compareDefined} from "./sort.js";

// Based on https://github.com/mourner/quickselect
// ISC license, Copyright 2018 Vladimir Agafonkin.
export default function quickselect(array, k, left = 0, right = Infinity, compare) {
  k = Math.floor(k);
  left = Math.floor(Math.max(0, left));
  right = Math.floor(Math.min(array.length - 1, right));

  if (!(left <= k && k <= right)) return array;

  compare = compare === undefined ? ascendingDefined : compareDefined(compare);

  while (right > left) {
    if (right - left > 600) {
      const n = right - left + 1;
      const m = k - left + 1;
      const z = Math.log(n);
      const s = 0.5 * Math.exp(2 * z / 3);
      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);
      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));
      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));
      quickselect(array, k, newLeft, newRight, compare);
    }

    const t = array[k];
    let i = left;
    let j = right;

    swap(array, left, k);
    if (compare(array[right], t) > 0) swap(array, left, right);

    while (i < j) {
      swap(array, i, j), ++i, --j;
      while (compare(array[i], t) < 0) ++i;
      while (compare(array[j], t) > 0) --j;
    }

    if (compare(array[left], t) === 0) swap(array, left, j);
    else ++j, swap(array, j, right);

    if (j <= k) left = j + 1;
    if (k <= j) right = j - 1;
  }

  return array;
}

function swap(array, i, j) {
  const t = array[i];
  array[i] = array[j];
  array[j] = t;
}

Directory Contents

Dirs: 1 × Files: 58
Name Size Perms Modified Actions
threshold DIR
- drwxr-xr-x 2025-07-10 12:54:56
Edit Download
90 B lrw-r--r-- 2025-07-10 12:54:55
Edit Download
127 B lrw-r--r-- 2025-07-10 12:54:55
Edit Download
3.96 KB lrw-r--r-- 2025-07-10 12:54:55
Edit Download
337 B lrw-r--r-- 2025-07-10 12:54:55
Edit Download
1.53 KB lrw-r--r-- 2025-07-10 12:54:55
Edit Download
3.99 KB lrw-r--r-- 2025-07-10 12:54:55
Edit Download
58 B lrw-r--r-- 2025-07-10 12:54:55
Edit Download
424 B lrw-r--r-- 2025-07-10 12:54:55
Edit Download
872 B lrw-r--r-- 2025-07-10 12:54:55
Edit Download
218 B lrw-r--r-- 2025-07-10 12:54:55
Edit Download
144 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
164 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
250 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
404 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
265 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
723 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
291 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
1.56 KB lrw-r--r-- 2025-07-10 12:54:56
Edit Download
675 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
470 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
1.68 KB lrw-r--r-- 2025-07-10 12:54:56
Edit Download
429 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
52 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
2.99 KB lrw-r--r-- 2025-07-10 12:54:56
Edit Download
446 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
672 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
467 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
310 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
502 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
582 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
483 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
245 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
165 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
502 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
582 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
708 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
535 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
465 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
307 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
97 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
1.73 KB lrw-r--r-- 2025-07-10 12:54:56
Edit Download
1.52 KB lrw-r--r-- 2025-07-10 12:54:56
Edit Download
350 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
942 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
460 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
183 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
178 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
329 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
263 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
1.22 KB lrw-r--r-- 2025-07-10 12:54:56
Edit Download
123 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
362 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
530 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
1.91 KB lrw-r--r-- 2025-07-10 12:54:56
Edit Download
369 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
217 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
668 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
106 B lrw-r--r-- 2025-07-10 12:54:56
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).