awkrs 0.4.13

Awk implementation in Rust with broad CLI compatibility, parallel records, and experimental Cranelift JIT
Documentation
# Quickselect — kth smallest element via Hoare partitioning.
# Input first line:  "K <k>"   the rank to find (1-based)
# Second line:       whitespace-separated integers
# Output:            "input: a1 a2 ...   k=<k>   kth_smallest=<v>"
# Tie-break: Lomuto partition with middle-of-range pivot — deterministic, no rand.

function partition(lo, hi,   piv, i, j, tmp) {
  piv = arr[lo + int((hi - lo) / 2)]
  i = lo - 1; j = hi + 1
  while (1) {
    do { i++ } while (arr[i] < piv)
    do { j-- } while (arr[j] > piv)
    if (i >= j) return j
    tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp
  }
}

function select(lo, hi, k,   p) {
  while (lo < hi) {
    p = partition(lo, hi)
    if (k <= p) hi = p
    else        lo = p + 1
  }
  return arr[lo]
}

NR == 1 && $1 == "K" { K = $2 + 0; next }
NR == 2 {
  n = NF
  for (i = 1; i <= n; i++) arr[i] = $i + 0
  raw = $0
  v = select(1, n, K)
  printf "input: %s   k=%d   kth_smallest=%d\n", raw, K, v
  exit 0
}