docs / stdlib / collection

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

aot

  1. Components
  2. Scope
  3. Scoped

codec

  1. Base32
  2. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. Fiber
  5. FiberLocal
  6. Lock
  7. Mutex
  8. RwLock
  9. Semaphore
  10. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. NotProvidedException
  4. RecoverableException
  5. ScopedBuildFailedException
  6. ScopeNotActiveException
  7. Throwable
  8. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. DefaultHasher
  2. Hash
  3. SipHash
  4. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. IpAddress
  4. Server
  5. ServerBuilder
  6. SocketAddress
  7. TcpListener
  8. TcpStream
  9. UdpSocket

io / net / dns

  1. Dns

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. CompressStream
  3. DecompressionLimitException
  4. Decompressor
  5. Encoder
  6. Schema
  7. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream
  4. KernelTimer

xpu / mesh

  1. MeshSimplifier

Sort

cajeta.collection.Sort — the general-purpose host sorting facility and the shared comparison/search seam that the Tensor numeric sort reuses. A comparator is a function value (T, T) -> int32 (negative / zero / positive, the Comparable contract); every algorithm is implemented once against a comparator, and the natural-order entry points are thin wrappers that pass a </>-based comparator. sort is unstable and fast (numpy kind='quicksort'); sortStable is a stable merge sort (numpy kind='stable'). lowerBound / upperBound / binarySearch search a sorted T[] with the same seam.

int32[] a = [ 5, 3, 8, 1, 9, 2, 7 ];
Sort.sort<int32>(a, 7);                        // [1, 2, 3, 5, 7, 8, 9]
int32 at = Sort.binarySearch<int32>(a, 7, 8);  // 5
int32 lo = Sort.lowerBound<int32>(a, 7, 4);    // 3 — first index not before 4

Methods

Signature
static void sort<T>(T[] a, int32 n, (T, T) -> int32 cmp) ⚑Unstable in-place sort of a[0..n) by cmp
static void sortStable<T>(T[] a, int32 n, (T, T) -> int32 cmp) ⚑Stable sort of a[0..n) by cmp
static int32 lowerBound<T>(T[] a, int32 n, T key, (T, T) -> int32 cmp)First index in sorted a[0..n) whose element does not order before key
static int32 upperBound<T>(T[] a, int32 n, T key, (T, T) -> int32 cmp)First index in sorted a[0..n) whose element orders after key
static int32 binarySearch<T>(T[] a, int32 n, T key, (T, T) -> int32 cmp)Index of key in sorted a[0..n), or -1 if absent (first match on duplicates)
static void sort<T>(T[] a, int32 n) ⚑Natural-order unstable sort by < on T
static void sort(int64[] a, int32 n)Concrete int64 overload — the vectorized (AVX-512 vqsort) fast path; wins overload resolution over the template for a bare Sort.sort(arr, n) call
static void sortStable<T>(T[] a, int32 n)Natural-order stable sort by < on T
static int32 lowerBound<T>(T[] a, int32 n, T key)Natural-order lowerBound
static int32 upperBound<T>(T[] a, int32 n, T key)Natural-order upperBound
static int32 binarySearch<T>(T[] a, int32 n, T key)Natural-order binarySearch

⚑ = @EntryPoint

The class also exposes a family of pdq* / vq* static helpers (partition, sorting-network, and merge steps of the quicksort/mergesort implementation); they are implementation machinery, not covered here.

See also

Source: docs/stdlib/collection/Sort.md · 2 min read · 388 words