You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Emir Pasic 09f75253fe optimizing the array stack to shrink array by factor of 1.5, now array stack is faster than linked list stack 9 years ago
maps hashmap implemented (inc. tests) 9 years ago
sets hashmap implemented (inc. tests) 9 years ago
stacks optimizing the array stack to shrink array by factor of 1.5, now array stack is faster than linked list stack 9 years ago
trees/redblacktree red-black tree Clear() method 9 years ago
utils - comparator test for custom comparator 9 years ago
.gitignore - gitignore update 9 years ago
.travis.yml Update .travis.yml 9 years ago
LICENSE Initial commit 9 years ago
README.md optimizing the array stack to shrink array by factor of 1.5, now array stack is faster than linked list stack 9 years ago

README.md

Build Status

GoDS (Go Data Structures)

Implementation of various data structures in Go.

Implementations

  • Sets:
    • HashSet (unordered)
    • TreeSet (ordered)
  • Stacks:
    • LinkedListStack
    • ArrayStack
  • Maps:
    • HashMap (unordered)
    • TreeMap (ordered)
  • Tree:
    • RedBlackTree

Motivations

Collections and data structures found in other languages: Java Collections, C++ Standard Template Library (STL) containers, Qt Containers, etc.

Goals

Fast algorithms:

  • Based on decades of knowledge and experiences of other libraries mentioned below.

Memory efficient algorithms:

  • Avoiding to consume memory by using optimal algorithms and data structures for the given set of problems, e.g. red-black tree in case of TreeMap to avoid keeping redundant sorted array of keys in memory.

Easy to use library:

  • Well-structued library with minimalistic set of atomic operations from which more complex operations can be crafted.

Stable library:

  • Only additions are permitted keeping the library backward compatible.

Solid documentation and examples:

  • TODO

Production ready:

  • TODO

There is often a tug of war between speed and memory when crafting algorithms. We choose to optimize for speed in most cases within reasonable limits on memory consumption.

Testing and Benchmarking

go test -v -bench . -benchmem -benchtime 1s ./...

License

Copyright (c) Emir Pasic, All rights reserved.

GNU Lesser General Public License Version 3, see LICENSE for more details.