{"id":1589,"url":"https://github.com/mikeroyal/Algorithms-and-Data-Structures","name":"Algorithms-and-Data-Structures","description":"Algorithms \u0026 Data Structures Guide","projects_count":47,"last_synced_at":"2026-05-26T12:00:36.095Z","repository":{"id":48937964,"uuid":"324859188","full_name":"mikeroyal/Algorithms-and-Data-Structures","owner":"mikeroyal","description":"Algorithms \u0026 Data Structures Guide","archived":false,"fork":false,"pushed_at":"2021-10-08T21:27:04.000Z","size":56,"stargazers_count":44,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-23T15:04:16.156Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mikeroyal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-27T22:19:44.000Z","updated_at":"2026-04-13T20:02:10.000Z","dependencies_parsed_at":"2022-09-11T22:02:22.327Z","dependency_job_id":null,"html_url":"https://github.com/mikeroyal/Algorithms-and-Data-Structures","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mikeroyal/Algorithms-and-Data-Structures","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeroyal%2FAlgorithms-and-Data-Structures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeroyal%2FAlgorithms-and-Data-Structures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeroyal%2FAlgorithms-and-Data-Structures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeroyal%2FAlgorithms-and-Data-Structures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikeroyal","download_url":"https://codeload.github.com/mikeroyal/Algorithms-and-Data-Structures/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeroyal%2FAlgorithms-and-Data-Structures/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33519201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T03:12:49.672Z","status":"ssl_error","status_checked_at":"2026-05-26T03:12:47.976Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-04T17:54:06.847Z","updated_at":"2026-05-26T12:00:36.095Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["License","Algorithms","Algorithms \u0026 Data Structures Learning Resources","Data Structures"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/123861400-f8e31080-d8db-11eb-8908-3c5341881d44.png\"\u003e\n  \u003cbr /\u003e\n  Algorithms \u0026 Data Structures Guide\n\u003c/h1\u003e\n\n#### A guide covering Data Structures and Algorithms such as Neural networks, MLPs, Arrays, Linked Lists, Trees, Hashtables, Stacks, Queues, Heaps, Graphs, Sorting \u0026 Searching, and Dynamic programming.\n\n**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).**\n\n \u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/123858017-e1098d80-d8d7-11eb-80ae-9858998a2604.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n# Table of Contents\n\n1. [Algorithms \u0026 Data Structures Learning Resources](https://github.com/mikeroyal/Algorithms-and-Data-Structures#algorithms--data-structures-learning-resources)\n\n2. [Algorithms](https://github.com/mikeroyal/Algorithms-and-Data-Structures#algorithms)\n\n3. [Algorithmic Complexity Analysis](https://github.com/mikeroyal/Algorithms-and-Data-Structures#algorithmic-complexity-analysis)\n\n4. [Data Structures](https://github.com/mikeroyal/Algorithms-and-Data-Structures#data-structures)\n\n\n## Algorithms \u0026 Data Structures Learning Resources\n[Back to the Top](https://github.com/mikeroyal/Algorithms-and-Data-Structures#table-of-contents)\n\n[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.\n\n[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.\n\n[VisualGo: Visualising data structures and algorithms through animation](https://visualgo.net/en)\n\n[Data Structure \u0026 Algorithms Visualizations](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html)\n\n[Learning Data Structures and Algorithms courses on Coursera](https://www.coursera.org/specializations/data-structures-algorithms)\n\n[Learning Data Structures and Algorithms courses on Udemy](https://www.udemy.com/courses/search/?src=ukw\u0026q=Data+Structures+and+Algorithms)\n\n[Learning Data Structures and Algorithms courses on edX](https://www.edx.org/search?q=Algorithms%20and%20Data%20Structures)\n\n[Intro to Data Structures and Algorithms courses on Udacity](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513)\n\n[Learning Algorithms courses on Khan Academy](https://www.khanacademy.org/computing/computer-science/algorithms)\n\n[Data Structures and Algorithms course from Harvard University](https://online-learning.harvard.edu/course/data-structures-and-algorithms)\n\n[Data Structures and Algorithms course from Standford University(CS 166)](http://web.stanford.edu/class/cs166/)\n\n[Learning Data Structures and Algorithms on CodeChef](https://www.codechef.com/certification/data-structures-and-algorithms/prepare)\n\n[Learning Algorithms and Data Structures courses on Pluralsight](https://www.pluralsight.com/courses/algorithms-data-structures-part-one)\n\n[Data structure and algorithms online course on Learnbay.io](https://www.learnbay.io/data-structures-algorithms/)\n\n[Discrete Probability](https://en.wikibooks.org/wiki/High_School_Mathematics_Extensions/Discrete_Probability)\n\n[Mathematical Proofs](https://en.wikibooks.org/wiki/High_School_Mathematics_Extensions/Mathematical_Proofs)\n\n\n## Algorithms\n[Back to the Top](https://github.com/mikeroyal/Algorithms-and-Data-Structures#table-of-contents)\n\n[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.\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/123861872-858dce80-d8dc-11eb-9a2c-51205d1541e9.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n**Architecture of a Fuzzy Logic System. Source: [ResearchGate](https://www.researchgate.net/figure/Architecture-of-a-fuzzy-logic-system_fig2_309452475)**\n\n[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.\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/123858065-ec5cb900-d8d7-11eb-81c5-c6a8feefa84f.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n**Support Vector Machine (SVM). Source:[OpenClipArt](https://openclipart.org/detail/182977/svm-support-vector-machines)**\n\n[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.\n\n \u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/136625300-9b4ff246-edfb-410e-8048-31163bfb4b5d.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n**Neural Networks Toplogies. Source: [Fjodor van Veen](https://www.asimovinstitute.org/author/fjodorvanveen/) from [Asimov institute](https://www.asimovinstitute.org/).**\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/123858036-e5ce4180-d8d7-11eb-8c52-43d7c7e6e3c4.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n**Deep neural network. Source: [IBM](https://www.ibm.com/cloud/learn/neural-networks)**\n\n[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.\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/123858026-e36be780-d8d7-11eb-9034-8859d6f09490.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n**Convolutional Neural Networks. Source: [CS231n](https://cs231n.github.io/convolutional-networks/#conv)**\n\n[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.\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/123858062-ebc42280-d8d7-11eb-9252-97e058bda8bd.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n**Recurrent Neural Networks. Source: [Slideteam](https://www.slideteam.net/recurrent-neural-networks-rnns-ppt-powerpoint-presentation-file-templates.html)**\n\n[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.\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/123858053-e8c93200-d8d7-11eb-844c-60463ecf662c.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n**Multilayer Perceptrons. Source: [DeepAI](https://deepai.org/machine-learning-glossary-and-terms/multilayer-perceptron)**\n\n[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.\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/124398881-fe21d000-dccc-11eb-8f5f-0a0730d85d55.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n**Random forest. Source: [wikimedia](https://community.tibco.com/wiki/random-forest-template-tibco-spotfirer-wiki-page)**\n\n[Decision trees](https://www.cs.cmu.edu/~bhiksha/courses/10-601/decisiontrees/) are tree-structured models for classification and regression.\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/124398883-ffeb9380-dccc-11eb-9adb-66729a353132.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n***Decision Trees. Source: [CMU](http://www.cs.cmu.edu/~bhiksha/courses/10-601/decisiontrees/)**\n\n[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.\n\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/124398885-00842a00-dccd-11eb-89c1-bd4c1adbf305.png\"\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n**Bayes' theorem. Source: [mathisfun](https://www.mathsisfun.com/data/bayes-theorem.html)**\n\n**Graph Algorithms**\n\n- Breadth First Search (BFS)\n- Depth First Search (DFS)\n- Shortest Path from source to all vertices **Dijkstra**\n- Shortest Path from every vertex to every other vertex **Floyd Warshall**\n- Minimum Spanning tree **Prim**\n- Minimum Spanning tree **Kruskal**\n- Topological Sort\n- Articulation Points (Cut Vertices) in a Graph\n- Bridges in a graph\n\n\n**Searching And Sorting**\n\n- Binary Search\n- Quick Sort\n- Merge Sort\n- Order Statistics\n- KMP algorithm\n- Rabin karp\n- Z’s algorithm\n- String Matching/String Parsing\n- Counting Sort\n\n\n**Dynamic Programming**\n\n- Longest Common Subsequence\n- Longest Increasing Subsequence\n- Edit Distance\n- Minimum Partition\n- Ways to Cover a Distance\n- Longest Path In Matrix\n- Subset Sum Problem\n- Optimal Strategy for a Game\n- 0-1 Knapsack Problem\n- Assembly Line Scheduling\n\n\n## Algorithmic Complexity Analysis\n[Back to the Top](https://github.com/mikeroyal/Algorithms-and-Data-Structures#table-of-contents)\n\n - Big O Notation\n - Time Complexity\n - Space Complexity\n \n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/103180857-ad797800-484e-11eb-9996-293ef282af76.jpg\"\u003e\n \n **Order of growth of algorithms specified in Big-O notation. Source: Big-O Cheat Sheet**\n \n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/103180859-b1a59580-484e-11eb-96d9-30456b2dc123.jpg\"\u003e\n \n **Complexity of operations on Data Structures. Source: Big-O Cheat Sheet**\n \n \n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/103180858-b0746880-484e-11eb-91ce-40defb302a6f.jpg\"\u003e\n \n **Complexity of Sorting algorithms. Source: Big-O Cheat Sheet**\n\n\n## Data Structures\n[Back to the Top](https://github.com/mikeroyal/Algorithms-and-Data-Structures#table-of-contents)\n\n[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.\n\n - [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.\n\n[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.\n\n - [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.\n \n - [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). \n\n[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.\n\n - Basic Tree\n - Binary Tree\n - Binary Search Tree\n - AVL Tree\n - Red-Black Tree\n - N-ary Tree\n\n[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.\n\n[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. \n\n- LIFO (Last In First Out)  \n- FILO (First In Last Out)\n\n[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.\n\n[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.\n\n- Max Heap\n- Min-Heap\n- Binary Heap\n\n[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). \n\n## Contribute\n\n- [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).\n\n\n## License\n[Back to the Top](https://github.com/mikeroyal/Algorithms-and-Data-Structures#table-of-contents)\n\nDistributed under the [Creative Commons Attribution 4.0 International (CC BY 4.0) Public License](https://creativecommons.org/licenses/by/4.0/).\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/mikeroyal%2Falgorithms-and-data-structures/projects"}