Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 3 months ago
JSON representation
Algorithms & Data Structures Guide
- Host: GitHub
- URL: https://github.com/mikeroyal/Algorithms-and-Data-Structures
- Owner: mikeroyal
- Created: 2020-12-27T22:19:44.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2021-10-08T21:27:04.000Z (about 3 years ago)
- Last Synced: 2024-05-23T09:19:04.433Z (5 months ago)
- Topics: 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
- Homepage:
- Size: 54.7 KB
- Stars: 22
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- ultimate-awesome - Algorithms-and-Data-Structures - Algorithms & Data Structures Guide. (Other Lists / PowerShell Lists)
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/).