All Projects → JoeKarlsson → Data Structures

JoeKarlsson / Data Structures

Licence: mit
Common data structures and algorithms implemented in JavaScript

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Data Structures

Algodeck
An Open-Source Collection of 200+ Algorithmic Flash Cards to Help you Preparing your Algorithm & Data Structure Interview 💯
Stars: ✭ 4,441 (+3094.96%)
Mutual labels:  algorithm, algorithms, graph, data-structures, tree, stack, array, linked-list, queue
Javascript Datastructures Algorithms
📚 collection of JavaScript and TypeScript data structures and algorithms for education purposes. Source code bundle of JavaScript algorithms and data structures book
Stars: ✭ 3,221 (+2217.27%)
Mutual labels:  algorithm, graph, data-structures, tree, stack, graph-algorithms, linked-list, queue
Cracking The Coding Interview
Solutions for Cracking the Coding Interview - 6th Edition
Stars: ✭ 35 (-74.82%)
Mutual labels:  graph, tree, stack, graph-algorithms, array, linked-list, queue
Geeksforgeeks Dsa 2
This repository contains all the assignments and practice questions solved during the Data Structures and Algorithms course in C++ taught by the Geeks For Geeks team.
Stars: ✭ 53 (-61.87%)
Mutual labels:  graph, data-structures, tree, stack, array, linked-list, queue
Interview Questions
List of all the Interview questions practiced from online resources and books
Stars: ✭ 187 (+34.53%)
Mutual labels:  algorithm, graph, data-structures, tree, stack, linked-list, queue
Learningmasteringalgorithms C
Mastering Algorithms with C 《算法精解:C语言描述》源码及Xcode工程、Linux工程
Stars: ✭ 615 (+342.45%)
Mutual labels:  algorithm, graph, tree, stack, linked-list, queue
Data Structures With Go
Data Structures with Go Language
Stars: ✭ 121 (-12.95%)
Mutual labels:  algorithms, tree, stack, graph-algorithms, linked-list, queue
Algo Tree
Algo-Tree is a collection of Algorithms and data structures which are fundamentals to efficient code and good software design. Creating and designing excellent algorithms is required for being an exemplary programmer. It contains solutions in various languages such as C++, Python and Java.
Stars: ✭ 166 (+19.42%)
Mutual labels:  graph, tree, stack, array, linked-list, queue
Leetcode
High-quality LeetCode solutions
Stars: ✭ 178 (+28.06%)
Mutual labels:  algorithm, graph, tree, stack, queue, memoization
C Sharp Algorithms
📚 📈 Plug-and-play class-library project of standard Data Structures and Algorithms in C#
Stars: ✭ 4,684 (+3269.78%)
Mutual labels:  algorithms, graph, data-structures, tree, graph-algorithms
Data-Structure-Algorithm-Programs
This Repo consists of Data structures and Algorithms
Stars: ✭ 464 (+233.81%)
Mutual labels:  tree, linked-list, stack, queue, array
Data Structures
This repository contains some data structures implementation in C programming language. I wrote the tutorial posts about these data structures on my personal blog site in Bengali language. If you know Bengali then visit my site
Stars: ✭ 82 (-41.01%)
Mutual labels:  data-structures, tree, stack, linked-list, queue
Buckets Js
A complete, fully tested and documented data structure library written in pure JavaScript.
Stars: ✭ 1,128 (+711.51%)
Mutual labels:  data-structures, tree, stack, linked-list, queue
Data-Structures-and-Algorithms
Data Structures and Algorithms implementation in Python
Stars: ✭ 31 (-77.7%)
Mutual labels:  linked-list, stack, queue, array, data-structures
Sc
Common libraries and data structures for C.
Stars: ✭ 161 (+15.83%)
Mutual labels:  algorithms, data-structures, stack, linked-list, queue
Data-structures
Data Structures in Java
Stars: ✭ 13 (-90.65%)
Mutual labels:  linked-list, stack, queue, graph, data-structures
Dsa.js Data Structures Algorithms Javascript
🥞Data Structures and Algorithms explained and implemented in JavaScript + eBook
Stars: ✭ 6,251 (+4397.12%)
Mutual labels:  algorithm, algorithms, graph, data-structures, tree
Mlib
Library of generic and type safe containers in pure C language (C99 or C11) for a wide collection of container (comparable to the C++ STL).
Stars: ✭ 321 (+130.94%)
Mutual labels:  algorithms, tree, stack, array, queue
Containers
This library provides various containers. Each container has utility functions to manipulate the data it holds. This is an abstraction as to not have to manually manage and reallocate memory.
Stars: ✭ 125 (-10.07%)
Mutual labels:  data-structures, tree, stack, array, queue
Data Structures Algorithms
My implementation of 85+ popular data structures and algorithms and interview questions in Python 3 and C++
Stars: ✭ 273 (+96.4%)
Mutual labels:  algorithm, graph, data-structures, tree, linked-list

JavaScript Data Structures and Algorithms

deps Coverage Status Build Status Maintainability stars pr license twitter BCH-compliance Greenkeeper badge

I put this repository together to get ready for technical interviews. I hope it helps you get ready for your next big technical interview. If you like what you see plz give it a star. Also, feel free to contribute :D

What is an algorithm?

In simple terms, it is possible to say that an algorithm is a sequence of steps which allow to solve a certain task ( Yes, not just computers use algorithms, humans also use them). Now, an algorithm should have three important characteristics to be considered valid:

  1. It should be finite: If your algorithm never ends trying to solve the problem it was designed to solve then it is useless

  2. It should have well defined instructions: Each step of the algorithm has to be precisely defined; the instructions should be unambiguously specified for each case.

  3. It should be effective: The algorithm should solve the problem it was designed to solve. And it should be possible to demonstrate that the algorithm converges with just a paper and pencil.

Getting Started

  1. Run npm install
  2. Run npm test to run all of the algorithms

This repo covers the following topics:

An algorithm is a self-contained step-by-step set of operations to be performed. Algorithms perform calculation, data processing, and/or automated reasoning tasks.

"Elegant" (compact) programs, "good" (fast) programs : The notion of "simplicity and elegance" appears informally in Knuth and precisely in Chaitin:

Knuth: ". . .we want good algorithms in some loosely defined aesthetic sense. One criterion . . . is the length of time taken to perform the algorithm . . .. Other criteria are adaptability of the algorithm to computers, its simplicity and elegance, etc"

Chaitin: " . . . a program is 'elegant,' by which I mean that it's the smallest possible program for producing the output that it does"

TODO:

  • Timsort
  • Floyd-Warshall
  • Traveling Salesman
  • k-way merge
  • Matching users to servers, using Gayle-Shapely Algorithm for Stable Marriage problem
    • This is a beautiful algorithm for fair matching. Simple, elegant and effective. In its core form, it’s also straightforward to implement. Has numerous applications. See: Stable marriage problem - Wikipedia
  • A toy implementation of Viterbi algorithm
    • Ubiquitous in cell phone technology, and many other applications, Viterbi algorithm is a Dynamic Programming based algorithm that finds the most likely sequence of states.
    • SSL transport, is the bane of safe existence on Internet these days. One of the most well-known algorithms in secure transport, is RSA, named by the first initials of its inventors. Implementing RSA is fun and instructive e.g. C code to implement RSA Algorithm(Encryption and Decryption)
  • Safe Browsing (or similar) using Bloom filters
    • Bloom filters found very rare usage until the world got more online and we hit scale. But these days, we see new applications very frequently.Chrome browser uses Bloom filters to make preliminary decision on safe browsing. See some novel applications here.
  • Implement an LALR parser
    • As a CS student, you may have already implemented it as part of your compiler’s class. But if not, then you should. LALR parsing makes syntactic sense of source code, whichever language you use. Many implementations of LALR exist. e.g. Where can I find a simple, easy to understand implementation of an LR(1) parser generator? Also, use YACC to understand LALR parsing better.
  • Treemap using Red Black Trees!
    • RB Trees are not algorithms, but they are famed enough, that no discussion of tantalizing DS/Algorithms is complete without discussing them. The smoothest way to see/implement RB Trees, is to look at Treemap implementation in Java.
  • Circle Drawing using Bresenham’s algorithm
    • Ever wondered, how circles are drawn on the screen, with minimal jaggedness (aliasing)? Bresenham’s elegant algorithm is at play here. See a version here: Circle Generation Algorithm . A refreshing use of a similar algorithm, is to make properly sized tabs in Chrome. Something we see almost every day. Such hidden gems!
  • Implement PageRank
    • Can’t miss this. This transformed our lives in ways we never thought possible. Get started here: Pagerank Explained Correctly with Examples

Contributing

Don't hesitate to create a pull request. Every contribution is appreciated. In development you can start the tests by calling npm test. Checkout our contribution README for more info.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Maintainers


Joe Karlsson

LICENSE

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].