Algorithms
Ruby algorithms and data structures. C extensions
Install / Use
/learn @kanwei/AlgorithmsREADME
algorithms 
DESCRIPTION:
Started as a Google Summer of Code 2008 project
Written by Kanwei Li, mentored by Austin Ziegler
Original Proposal:
Using the right data structure or algorithm for the situation is an important aspect of programming. In computer science literature, many data structures and algorithms have been researched and extensively documented. However, there is still no standard library in Ruby implementing useful structures and algorithms like Red/Black Trees, tries, different sorting algorithms, etc. This project will create such a library with documentation on when to use a particular structure/algorithm. It will also come with a benchmark suite to compare performance in different situations.
COMPLETED:
* Heaps Containers::Heap, Containers::MaxHeap, Containers::MinHeap
* Priority Queue Containers::PriorityQueue
* Deque Containers::Deque, Containers::CDeque (C ext)
* Stack Containers::Stack
* Queue Containers::Queue
* Red-Black Trees Containers::RBTreeMap, Containers::CRBTreeMap (C ext)
* Splay Trees Containers::SplayTreeMap, Containers::CSplayTreeMap (C ext)
* Tries Containers::Trie
* Suffix Array Containers::SuffixArray
* Search algorithms
- Binary Search Algorithms::Search.binary_search
- Knuth-Morris-Pratt Algorithms::Search.kmp_search
* Sorting algorithms
- Bubble sort Algorithms::Sort.bubble_sort
- Comb sort Algorithms::Sort.comb_sort
- Selection sort Algorithms::Sort.selection_sort
- Heapsort Algorithms::Sort.heapsort
- Insertion sort Algorithms::Sort.insertion_sort
- Shell sort Algorithms::Sort.shell_sort
- Quicksort Algorithms::Sort.quicksort
- Mergesort Algorithms::Sort.mergesort
- Dual-Pivot Quicksort Algorithms::Sort.dualpivotquicksort
SYNOPSIS:
require 'rubygems'
require 'algorithms'
max_heap = Containers::MaxHeap.new
# To not have to type "Containers::" before each class, use:
include Containers
max_heap = MaxHeap.new
REQUIREMENTS:
- Ruby 1.8, Ruby 1.9, JRuby
- C extensions (optional, but very much recommended for vast performance benefits)
LICENSE:
See LICENSE.md.
Related Skills
node-connect
347.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
