Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kanwei/algorithms
Ruby algorithms and data structures. C extensions
https://github.com/kanwei/algorithms
Last synced: 27 days ago
JSON representation
Ruby algorithms and data structures. C extensions
- Host: GitHub
- URL: https://github.com/kanwei/algorithms
- Owner: kanwei
- License: mit
- Created: 2008-07-10T09:55:11.000Z (over 16 years ago)
- Default Branch: master
- Last Pushed: 2024-01-18T17:26:46.000Z (10 months ago)
- Last Synced: 2024-10-13T13:38:22.125Z (29 days ago)
- Language: Ruby
- Homepage: http://kanwei.github.io/algorithms/
- Size: 996 KB
- Stars: 2,664
- Watchers: 106
- Forks: 352
- Open Issues: 17
-
Metadata Files:
- Readme: README.markdown
- Changelog: CHANGELOG.markdown
- License: LICENSE.md
Awesome Lists containing this project
- awesome-ruby - algorithms - Library with documentation on when to use a particular structure/algorithm. (Scientific)
README
# algorithms [![Build Status](https://travis-ci.org/kanwei/algorithms.svg?branch=master)](https://travis-ci.org/github/kanwei/algorithms)
[API Documentation](http://kanwei.github.io/algorithms/)
## DESCRIPTION:
Started as a [Google Summer of Code 2008](http://code.google.com/soc/2008/ruby/about.html) project
Written by [Kanwei Li](http://kanwei.com/), 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](LICENSE.md).