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.

75 packages
  • table 0.1.2

    Unified access to tabular data

    47
    1.0m last 90 days
  • jumper 1.0.2

    Jump consistent hash implementation in Elixir

    12
    1.0m last 90 days
  • A fast consistent hash ring implementation in Elixir.

    585
    983.0k last 90 days
  • flow 1.2.4

    Computational parallel flows for Elixir

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

    29
    691.9k last 90 days
  • ra 3.2.0

    Raft library

    963
    445.5k last 90 days
  • zipper 1.1.1

    Generic Zipper Implementation for Erlang

    37
    421.3k last 90 days
  • trie 2.0.7

    Erlang Trie Implementation

    132
    358.9k last 90 days
  • crux 0.1.4

    Library for boolean satisfiability solving and expression manipulation.

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

    2
    298.8k last 90 days
  • libgraph 0.16.0

    A high-performance graph datastructure library for Elixir projects

    570
    293.3k 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
    284.0k last 90 days
  • libring 1.7.0

    A fast consistent hash ring implementation in Elixir

    228
    265.5k last 90 days
  • shards 1.1.1

    Erlang/Elixir library for partitioned or sharded ETS tables.

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

    103
    222.2k last 90 days
  • A faster Map, augmented with a MerkleTree

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

    558
    195.2k last 90 days
  • radix 0.5.0

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

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

    12
    120.1k last 90 days
  • deque 1.2.0

    Fast bounded deque using two rotating lists.

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

    22
    77.4k last 90 days
  • A simple, dependency free boolean satisfiability solver.

    6
    63.9k last 90 days
  • Consistent Hash Ring

    45
    51.2k last 90 days
  • bimap 1.3.0

    Elixir implementation of bidirectional map and multimap

    34
    50.0k last 90 days
  • qex 0.5.2

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

    35
    48.1k last 90 days
  • A splay-tree implementation

    13
    36.3k last 90 days
  • jchash 0.1.4

    Jump Consistent Hash NIF library for Erlang/Elixir.

    18
    32.5k 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
    26.5k last 90 days
  • noether 2.0.0

    Algebra utilities for Elixir

    25
    22.3k last 90 days
  • heap 3.0.0

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

    21.8k last 90 days
  • An OTP application

    20.8k last 90 days
  • Tries in Gleam

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

    10
    16.3k last 90 days
  • Non-empty lists in Gleam

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

    31
    14.2k last 90 days
  • Elixir library computing simple combination and permutation on Enumerables.

    34
    14.1k last 90 days
  • ord_map 0.1.0

    Ordered map for Elixir lang

    5
    11.9k last 90 days
  • tote 1.1.0

    Bags (or multisets) in Gleam

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

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

    48
    10.5k last 90 days
  • Immutable arrays for Gleam

    9
    10.3k last 90 days
  • eyg_ir 3.2.0

    Data structures for the EYG IR

    364
    9.0k last 90 days
  • cbuf 0.7.1

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

    11
    8.6k last 90 days
  • yog_ex 0.99.1

    A comprehensive pure Elixir graph algorithm library

    35
    7.8k 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.6k last 90 days
  • fixpoint 0.22.6

    Constraint Programming Solver

    65
    6.9k last 90 days
  • abit 1.0.0

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

    10
    6.7k last 90 days
  • solverl 1.1.2

    Elixir/Erlang interface to MiniZinc (https://www.minizinc.org/).

    47
    6.6k last 90 days
  • ease 1.0.2

    Simple implementation of standard animation easing functions.

    1
    6.5k last 90 days
  • dux 0.3.0

    DuckDB-native dataframe library for Elixir

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

    9
    6.3k last 90 days
  • merklet 2.0.0

    Merkle Trees for data replication purposes

    77
    6.2k last 90 days
  • riak_dt 2.1.1

    riak CTDT datatypes

    357
    6.1k last 90 days
  • Ethereum's Merkle Patricia Trie data structure

    24
    5.9k last 90 days
  • talan 1.0.0

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

    8
    5.7k last 90 days
  • pqueue 2.0.7

    Erlang Priority Queue Implementation

    173
    5.4k last 90 days
  • sets-like wrapper based on maps

    13
    5.2k last 90 days
  • lqueue 1.2.0

    Double-ended queue with limited length

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

    1
    4.9k last 90 days
  • An Elixir implementation of the Google diff_match_patch library.

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

    11
    4.3k last 90 days
  • concord 3.0.4

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

    2
    4.1k last 90 days
  • Helper functions for working with weighted random values.

    4
    3.8k last 90 days
  • inplace 0.7.13

    Mutable data structures

    7
    3.8k last 90 days
  • pacer 0.1.6

    Dependency graphs for optimal function call ordering

    46
    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
  • Mutable directed graph

    1
    3.6k last 90 days
  • A double-ended queue data structure

    10
    3.4k last 90 days
  • Library for dealing with data structures

    52
    3.4k last 90 days
  • Simple Bloom Filter wrapping the fastbloom Rust crate

    0
    3.4k last 90 days
  • A fleet of Raft consensus groups

    3.2k last 90 days
  • iv 1.4.4

    A fast, safe, batteries-included array for Gleam!

    3.1k last 90 days
  • vec 4.1.0

    A vectors library for the Gleam programming language

    3.0k last 90 days
  • bloomex 1.2.0

    Bloomex is a pure Elixir implementation of Scalable Bloom Filters.

    111
    3.0k last 90 days
  • tobble 2.0.2

    A simple table library for Gleam

    11
    2.8k last 90 days