Algorithms and Data structures

Implementations of algorithms and data structures optimized for Elixir's functional programming paradigm. Packages among the 3,000 most downloaded in the past 90 days.

79 packages
  • table 0.1.2

    Unified access to tabular data

    47
    1.5m last 90 days
  • A fast consistent hash ring implementation in Elixir.

    586
    1.2m last 90 days
  • jumper 1.0.2

    Jump consistent hash implementation in Elixir

    12
    1.2m last 90 days
  • flow 1.2.4

    Computational parallel flows for Elixir

    1.6k
    943.1k last 90 days
  • General purpose circular buffer.

    29
    819.6k last 90 days
  • ra 3.2.0

    Raft library

    976
    518.6k last 90 days
  • A high-performance graph datastructure library for Elixir projects with multigraph support

    2
    488.0k last 90 days
  • zipper 1.1.1

    Generic Zipper Implementation for Erlang

    37
    469.2k last 90 days
  • trie 2.0.7

    Erlang Trie Implementation

    131
    457.5k last 90 days
  • crux 0.1.4

    Library for boolean satisfiability solving and expression manipulation.

    14
    383.4k last 90 days
  • murmur 2.0.2

    Murmur is a pure Elixir implementation of the non-cryptographic hash Murmur3. It aims to implement the x86_32bit, x86_128bit and x64_128bit variants.

    6
    361.6k last 90 days
  • libring 1.7.0

    A fast consistent hash ring implementation in Elixir

    229
    349.6k last 90 days
  • libgraph 0.16.0

    A high-performance graph datastructure library for Elixir projects

    571
    344.8k last 90 days
  • A faster Map, augmented with a MerkleTree

    107
    286.5k last 90 days
  • Implementations of δ-CRDTs

    559
    284.0k last 90 days
  • shards 1.1.1

    Erlang/Elixir library for partitioned or sharded ETS tables.

    298
    270.6k last 90 days
  • Parallel stream operations for Elixir

    103
    241.9k last 90 days
  • radix 0.5.0

    A bitwise radix tree for prefix based matching on bitstring keys of any length.

    12
    212.2k last 90 days
  • ETS-based partitioned buffer for high-throughput data processing

    13
    163.3k last 90 days
  • deque 1.2.0

    Fast bounded deque using two rotating lists.

    157
    128.8k last 90 days
  • Simple Elixir queue, with a constant-time `size/1` and a maximum capacity.

    22
    111.1k last 90 days
  • bimap 1.3.0

    Elixir implementation of bidirectional map and multimap

    34
    90.2k last 90 days
  • qex 0.5.2

    A `:queue` wrapper with improvements in API and addition of Protocol implementations

    35
    84.6k last 90 days
  • A simple, dependency free boolean satisfiability solver.

    6
    83.8k last 90 days
  • Consistent Hash Ring

    46
    52.0k last 90 days
  • jchash 0.1.4

    Jump Consistent Hash NIF library for Erlang/Elixir.

    18
    36.2k last 90 days
  • heap 3.0.0

    Small composable Heap implementation. Heaps sort elements at insert time.

    30.3k last 90 days
  • A splay-tree implementation

    13
    27.8k last 90 days
  • Tries in Gleam

    15
    27.6k last 90 days
  • A pure Gleam package to compute the edit distance of two strings

    10
    25.7k last 90 days
  • Elixir library computing simple combination and permutation on Enumerables.

    34
    22.7k last 90 days
  • noether 2.0.0

    Algebra utilities for Elixir

    25
    22.4k last 90 days
  • Non-empty lists in Gleam

    12
    22.0k last 90 days
  • An OTP application

    20.8k last 90 days
  • Immutable arrays for Gleam

    9
    20.2k last 90 days
  • eyg_ir 3.2.0

    Data structures for the EYG IR

    380
    19.1k last 90 days
  • Implementation of the Ramer–Douglas–Peucker algorithm for reducing the number of points used to represent a curve.

    31
    15.8k last 90 days
  • ord_map 0.1.0

    Ordered map for Elixir lang

    5
    12.8k last 90 days
  • A high-performance, concurrent, and mutable Cuckoo Filter for Erlang and Elixir

    48
    11.7k last 90 days
  • tote 1.1.0

    Bags (or multisets) in Gleam

    9
    11.1k last 90 days
  • A library for cosine similarity & simhash calculation

    17
    10.9k last 90 days
  • Real-valued intervals with support for the `Enumerable` protocol.

    11
    10.8k last 90 days
  • merklet 2.0.0

    Merkle Trees for data replication purposes

    77
    9.6k last 90 days
  • yog_ex 1.0.0

    A comprehensive pure Elixir graph algorithm library

    35
    8.8k last 90 days
  • An Elixir implementation of the Google diff_match_patch library.

    5
    7.9k last 90 days
  • NaryTree implements the data structure for n-ary tree (also called rose tree), where each node in the tree can have zero or more children. NaryTree provides methods for traversal and manipulation of the tree structure and node contents.

    18
    7.9k last 90 days
  • Traverse is a toolset to walk arbitrary Elixir Datastructures in a functional way.

    9
    7.8k last 90 days
  • ease 1.0.2

    Simple implementation of standard animation easing functions.

    1
    7.4k last 90 days
  • arrays 2.1.1

    Well-structured Arrays with fast random-element-access for Elixir, offering a common interface with multiple implementations (MapArray, Erlang :array, etc.) with varying performance guarantees that can be switched in your configuration.

    91
    7.2k last 90 days
  • pqueue 2.0.7

    Erlang Priority Queue Implementation

    173
    7.0k last 90 days
  • A hash tree or Merkle tree is a tree in which every non-leaf node is labelled with the hash of the labels or values (in case of leaves) of its child nodes. Hash trees are useful because they allow efficient and secure verification of the contents of large data structures.

    98
    7.0k last 90 days
  • Ethereum's Merkle Patricia Trie data structure

    24
    6.6k last 90 days
  • fixpoint 0.22.7

    Constraint Programming Solver

    65
    6.6k last 90 days
  • Helper functions for working with weighted random values.

    4
    5.9k last 90 days
  • vault 0.2.1

    Vault: a process-scoped hierarchical data storage library

    43
    5.6k last 90 days
  • abit 1.0.0

    Use `:atomics` as a bit array or as an array of N-bit counters.

    10
    5.6k last 90 days
  • lqueue 1.2.0

    Double-ended queue with limited length

    3
    5.5k last 90 days
  • sets-like wrapper based on maps

    13
    5.5k last 90 days
  • GenStagA data type and related functions to support an unrooted (multiple starting nodes) polytree (a tree-like graph with edges).

    1
    5.4k last 90 days
  • riak_dt 2.1.1

    riak CTDT datatypes

    357
    5.2k last 90 days
  • talan 1.0.0

    Probabilistic data structures powered by atomics. Bloom filter, Counting bloom filter, Linear counter (cardinality)

    8
    5.0k last 90 days
  • concord 3.1.4

    A distributed, strongly-consistent key-value store built on Raft

    3
    4.4k last 90 days
  • Storing a set of closed intervals

    0
    4.4k last 90 days
  • dux 0.3.0

    DuckDB-native dataframe library for Elixir

    106
    4.3k last 90 days
  • Compositional, resource-safe streams for Gleam — runs on Erlang and JavaScript targets

    5
    4.1k last 90 days
  • ex_vrp 0.17.0

    Elixir bindings for PyVRP - a state-of-the-art vehicle routing problem solver

    4
    4.1k last 90 days
  • hlc 3.0.4

    hybrid logical clock

    0
    4.0k last 90 days
  • tobble 2.0.2

    A simple table library for Gleam

    11
    4.0k last 90 days
  • ETS trie to match keys

    0
    3.9k last 90 days
  • router 1.0.4

    Trie based router.

    15
    3.9k last 90 days
  • cbuf 0.7.1

    A circular buffer backed by a queue, map, or ETS

    11
    3.9k last 90 days
  • The datamodel document and what can be decided from it: the typed three-scope declaration, its named record and shape types, the path/type index, the read check, compatibility and coverage - pure functions, no dependency on the block editor, the compiler or the UI

    0
    3.7k last 90 days
  • RingBuffer - size limited queue, like a ring or cyclic buffer. With non blocking and non locking writers.

    5
    3.6k last 90 days
  • Satellite toolkit for Elixir with SGP4 propagation, coordinate transforms, GNSS positioning, orbit determination, conjunction assessment, pass prediction, live TLE/OMM data, real-time tracking, and a Rust NIF backend.

    2
    3.6k last 90 days
  • Data structures in pure Gleam! Including tree, heap, non empty list, map, set, and priority queue.

    33
    3.6k last 90 days
  • inplace 0.7.13

    Mutable data structures

    7
    3.6k last 90 days
  • Edit distances, similarity scores, LCS, and diff for Gleam.

    5
    3.5k last 90 days
  • A double-ended queue data structure

    10
    3.5k last 90 days
  • pacer 0.1.6

    Dependency graphs for optimal function call ordering

    46
    3.4k last 90 days