Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mikeroyal/Algorithms-and-Data-Structures

Algorithms & Data Structures Guide
https://github.com/mikeroyal/Algorithms-and-Data-Structures

List: Algorithms-and-Data-Structures

algorithms awesome awesome-list binary-search binary-search-tree computer-science data-structures data-structures-and-algorithms datastructures graph-algorithms interview-practice interview-preparation interview-questions leetcode leetcode-solutions machine-learning multilayer-perceptron multilayer-perceptron-network software-engineering

Last synced: 16 days ago
JSON representation

Algorithms & Data Structures Guide

Awesome Lists containing this project

README

        





Algorithms & Data Structures Guide

#### A guide covering Data Structures and Algorithms such as Neural networks, MLPs, Arrays, Linked Lists, Trees, Hashtables, Stacks, Queues, Heaps, Graphs, Sorting & Searching, and Dynamic programming.

**Note: You can easily convert this markdown file to a PDF in [VSCode](https://code.visualstudio.com/) using this handy extension [Markdown PDF](https://marketplace.visualstudio.com/items?itemName=yzane.markdown-pdf).**





# Table of Contents

1. [Algorithms & Data Structures Learning Resources](https://github.com/mikeroyal/Algorithms-and-Data-Structures#algorithms--data-structures-learning-resources)

2. [Algorithms](https://github.com/mikeroyal/Algorithms-and-Data-Structures#algorithms)

3. [Algorithmic Complexity Analysis](https://github.com/mikeroyal/Algorithms-and-Data-Structures#algorithmic-complexity-analysis)

4. [Data Structures](https://github.com/mikeroyal/Algorithms-and-Data-Structures#data-structures)

## Algorithms & Data Structures Learning Resources
[Back to the Top](https://github.com/mikeroyal/Algorithms-and-Data-Structures#table-of-contents)

[Algorithm](https://en.wikipedia.org/wiki/Algorithm) is a procedure of well-defined, computer implementabled instructions, typically to solve a class of specific problems or to perform a computation task such as data processing, automated reasoning, and machine learning.

[Data Structure](https://www.w3schools.in/data-structures-tutorial/intro/) is a specific way to store and organize data in a computer's memory so that these data can be used efficiently later. Data may be arranged in many different ways, such as the logical or mathematical model for a particular organization of data is termed as a data structure.

[VisualGo: Visualising data structures and algorithms through animation](https://visualgo.net/en)

[Data Structure & Algorithms Visualizations](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html)

[Learning Data Structures and Algorithms courses on Coursera](https://www.coursera.org/specializations/data-structures-algorithms)

[Learning Data Structures and Algorithms courses on Udemy](https://www.udemy.com/courses/search/?src=ukw&q=Data+Structures+and+Algorithms)

[Learning Data Structures and Algorithms courses on edX](https://www.edx.org/search?q=Algorithms%20and%20Data%20Structures)

[Intro to Data Structures and Algorithms courses on Udacity](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513)

[Learning Algorithms courses on Khan Academy](https://www.khanacademy.org/computing/computer-science/algorithms)

[Data Structures and Algorithms course from Harvard University](https://online-learning.harvard.edu/course/data-structures-and-algorithms)

[Data Structures and Algorithms course from Standford University(CS 166)](http://web.stanford.edu/class/cs166/)

[Learning Data Structures and Algorithms on CodeChef](https://www.codechef.com/certification/data-structures-and-algorithms/prepare)

[Learning Algorithms and Data Structures courses on Pluralsight](https://www.pluralsight.com/courses/algorithms-data-structures-part-one)

[Data structure and algorithms online course on Learnbay.io](https://www.learnbay.io/data-structures-algorithms/)

[Discrete Probability](https://en.wikibooks.org/wiki/High_School_Mathematics_Extensions/Discrete_Probability)

[Mathematical Proofs](https://en.wikibooks.org/wiki/High_School_Mathematics_Extensions/Mathematical_Proofs)

## Algorithms
[Back to the Top](https://github.com/mikeroyal/Algorithms-and-Data-Structures#table-of-contents)

[Fuzzy logic](https://www.investopedia.com/terms/f/fuzzy-logic.asp) is a heuristic approach that allows for more advanced decision-tree processing and better integration with rules-based programming.





**Architecture of a Fuzzy Logic System. Source: [ResearchGate](https://www.researchgate.net/figure/Architecture-of-a-fuzzy-logic-system_fig2_309452475)**

[Support Vector Machine (SVM)](https://web.stanford.edu/~hastie/MOOC-Slides/svm.pdf) is a supervised machine learning model that uses classification algorithms for two-group classification problems.





**Support Vector Machine (SVM). Source:[OpenClipArt](https://openclipart.org/detail/182977/svm-support-vector-machines)**

[Neural networks](https://www.ibm.com/cloud/learn/neural-networks) are a subset of machine learning and are at the heart of deep learning algorithms. The name/structure is inspired by the human brain copying the process that biological neurons/nodes signal to one another.





**Neural Networks Toplogies. Source: [Fjodor van Veen](https://www.asimovinstitute.org/author/fjodorvanveen/) from [Asimov institute](https://www.asimovinstitute.org/).**





**Deep neural network. Source: [IBM](https://www.ibm.com/cloud/learn/neural-networks)**

[Convolutional Neural Networks (R-CNN)](https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-convolutional-neural-networks) is an object detection algorithm that first segments the image to find potential relevant bounding boxes and then run the detection algorithm to find most probable objects in those bounding boxes.





**Convolutional Neural Networks. Source: [CS231n](https://cs231n.github.io/convolutional-networks/#conv)**

[Recurrent neural networks (RNNs)](https://www.ibm.com/cloud/learn/recurrent-neural-networks) is a type of artificial neural network which uses sequential data or time series data.





**Recurrent Neural Networks. Source: [Slideteam](https://www.slideteam.net/recurrent-neural-networks-rnns-ppt-powerpoint-presentation-file-templates.html)**

[Multilayer Perceptrons (MLPs)](https://deepai.org/machine-learning-glossary-and-terms/multilayer-perceptron) is multi-layer neural networks composed of multiple layers of [perceptrons](https://en.wikipedia.org/wiki/Perceptron) with a threshold activation.





**Multilayer Perceptrons. Source: [DeepAI](https://deepai.org/machine-learning-glossary-and-terms/multilayer-perceptron)**

[Random forest](https://www.ibm.com/cloud/learn/random-forest) is a commonly-used machine learning algorithm, which combines the output of multiple decision trees to reach a single result. A decision tree in a forest cannot be pruned for sampling and therefore, prediction selection. Its ease of use and flexibility have fueled its adoption, as it handles both classification and regression problems.





**Random forest. Source: [wikimedia](https://community.tibco.com/wiki/random-forest-template-tibco-spotfirer-wiki-page)**

[Decision trees](https://www.cs.cmu.edu/~bhiksha/courses/10-601/decisiontrees/) are tree-structured models for classification and regression.





***Decision Trees. Source: [CMU](http://www.cs.cmu.edu/~bhiksha/courses/10-601/decisiontrees/)**

[Naive Bayes](https://en.wikipedia.org/wiki/Naive_Bayes_classifier) is a machine learning algorithm that is used solved calssification problems. It's based on applying [Bayes' theorem](https://www.mathsisfun.com/data/bayes-theorem.html) with strong independence assumptions between the features.





**Bayes' theorem. Source: [mathisfun](https://www.mathsisfun.com/data/bayes-theorem.html)**

**Graph Algorithms**

- Breadth First Search (BFS)
- Depth First Search (DFS)
- Shortest Path from source to all vertices **Dijkstra**
- Shortest Path from every vertex to every other vertex **Floyd Warshall**
- Minimum Spanning tree **Prim**
- Minimum Spanning tree **Kruskal**
- Topological Sort
- Articulation Points (Cut Vertices) in a Graph
- Bridges in a graph

**Searching And Sorting**

- Binary Search
- Quick Sort
- Merge Sort
- Order Statistics
- KMP algorithm
- Rabin karp
- Z’s algorithm
- String Matching/String Parsing
- Counting Sort

**Dynamic Programming**

- Longest Common Subsequence
- Longest Increasing Subsequence
- Edit Distance
- Minimum Partition
- Ways to Cover a Distance
- Longest Path In Matrix
- Subset Sum Problem
- Optimal Strategy for a Game
- 0-1 Knapsack Problem
- Assembly Line Scheduling

## Algorithmic Complexity Analysis
[Back to the Top](https://github.com/mikeroyal/Algorithms-and-Data-Structures#table-of-contents)

- Big O Notation
- Time Complexity
- Space Complexity



**Order of growth of algorithms specified in Big-O notation. Source: Big-O Cheat Sheet**



**Complexity of operations on Data Structures. Source: Big-O Cheat Sheet**




**Complexity of Sorting algorithms. Source: Big-O Cheat Sheet**

## Data Structures
[Back to the Top](https://github.com/mikeroyal/Algorithms-and-Data-Structures#table-of-contents)

[Arrays](https://www.cplusplus.com/doc/tutorial/arrays/) are a series of elements(numbers, booleans, or strings) of the same type placed in phyiscal memory locations that can be individually referenced by adding an index to a unique identifier.

- [Vector](https://www.cplusplus.com/reference/vector/vector/) is a dynamic array, where the size can be increased when an element is inserted or deleted, with the storage being handled automatically by the container.

[Linked Lists](https://en.wikipedia.org/wiki/Linked_list) is a linear collection of data elements whose order is not given by their physical placement in memory. Instead, elements in a linked list are linked using pointers.

- [Singly Linked List](https://www.geeksforgeeks.org/data-structures/linked-list/singly-linked-list/) is a type of linked data structure where each node points to the next node in the sequence. It does not have any pointer that points to the previous node.

- [Doubly-Linked List](https://en.wikipedia.org/wiki/Doubly_linked_list) is a type of linked data structure in which each node apart from storing its data has two links. A node consists of three parts: node data, a pointer to the next node in sequence (next pointer), pointer to the previous node (previous pointer).

[Trees](https://en.wikipedia.org/wiki/Tree_(data_structure)) is a nonlinear data structure unlike arrays, linked lists, stacks and queues which are linear data structures. A tree can be empty with no nodes or in other instances a tree's structure consists of one node called the root and 0 or 1 or more subtrees.

- Basic Tree
- Binary Tree
- Binary Search Tree
- AVL Tree
- Red-Black Tree
- N-ary Tree

[Hash Tables](https://docs.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-hashtable?view=powershell-7.1) are a data structure, much like an array, except you store each value (object) using a key. It is a basic key/value store for mapping known as a hash function.

[Stacks](https://www.thedshandbook.com/stacks/) is a linear data structure that store data in an order known as the Last In First Out (LIFO) order.

- LIFO (Last In First Out)
- FILO (First In Last Out)

[Queues](https://www.thedshandbook.com/queues/) is a linear data structure that stores data in an order known as the First In First Out(FIFO) order.

[Heaps](https://en.wikipedia.org/wiki/Heap_(data_structure)) is a specialized tree-based data structure which is essentially an almost complete tree that satisfies the heap property.

- Max Heap
- Min-Heap
- Binary Heap

[Graphs](https://www.thedshandbook.com/graphs/) is a data structure that represent relations between pairs of objects. It consists of nodes (known as vertices) that are connected through links (known as edges).

## Contribute

- [x] If would you like to contribute to this guide simply make a [Pull Request](https://github.com/mikeroyal/Algorithms-and-Data-Structures-Guide/pulls).

## License
[Back to the Top](https://github.com/mikeroyal/Algorithms-and-Data-Structures#table-of-contents)

Distributed under the [Creative Commons Attribution 4.0 International (CC BY 4.0) Public License](https://creativecommons.org/licenses/by/4.0/).