{"id":20929492,"url":"https://github.com/skshahriarahmedraka/datastructure-algorithm-designpatterns-in-golang","last_synced_at":"2025-05-13T18:32:29.987Z","repository":{"id":94658709,"uuid":"405052589","full_name":"skshahriarahmedraka/DataStructure-Algorithm-DesignPatterns-in-Golang","owner":"skshahriarahmedraka","description":" DataStructure, Algorithm, Design Patterns in Golang","archived":false,"fork":false,"pushed_at":"2024-03-30T13:47:22.000Z","size":799,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T06:21:28.568Z","etag":null,"topics":["algorithm","algorithms","cipher-algorithms","cryptography","data-structures","design-patterns","dynamic-programming","encryption","golang","graph","greedy-algorithms","math","search-algorithm","searching-algorithms","sorting-algorithms","stack","string","tree-structure"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skshahriarahmedraka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-09-10T11:10:01.000Z","updated_at":"2024-04-25T02:13:35.000Z","dependencies_parsed_at":"2024-04-02T06:00:34.295Z","dependency_job_id":null,"html_url":"https://github.com/skshahriarahmedraka/DataStructure-Algorithm-DesignPatterns-in-Golang","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skshahriarahmedraka%2FDataStructure-Algorithm-DesignPatterns-in-Golang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skshahriarahmedraka%2FDataStructure-Algorithm-DesignPatterns-in-Golang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skshahriarahmedraka%2FDataStructure-Algorithm-DesignPatterns-in-Golang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skshahriarahmedraka%2FDataStructure-Algorithm-DesignPatterns-in-Golang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skshahriarahmedraka","download_url":"https://codeload.github.com/skshahriarahmedraka/DataStructure-Algorithm-DesignPatterns-in-Golang/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254003391,"owners_count":21997880,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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"}},"keywords":["algorithm","algorithms","cipher-algorithms","cryptography","data-structures","design-patterns","dynamic-programming","encryption","golang","graph","greedy-algorithms","math","search-algorithm","searching-algorithms","sorting-algorithms","stack","string","tree-structure"],"created_at":"2024-11-18T21:20:06.901Z","updated_at":"2025-05-13T18:32:29.355Z","avatar_url":"https://github.com/skshahriarahmedraka.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Data structure,Algorithms implemented in Go (for education)\n\n\u003cimg align=\"right\" alt=\"go-pic\" width=\"300px\" src=\"./0.icons/n.png\" /\u003e\n\n[comment]: \u003c\u003e (Data structure, Ciphers, Conversions,Design Patterns,Dynamic Programming,Genetic Algorithm,)\n\n[comment]: \u003c\u003e (Graphs,Tree,Math,Search, Sorts, String)\n\n\u003ca href=\"https://img.shields.io/badge/license-MIT-green\"\u003e\u003cimg alt=\"build-status\" src=\"https://img.shields.io/badge/license-MIT-green\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://www.t.me/shahriarraka\"\u003e\u003cimg alt=\"build-status\" src=\"https://img.shields.io/badge/telegram-shahriarahmed-red\" /\u003e\u003c/a\u003e\n\n## List of Content :\n\n **[1. Math](#1-math-read)** - **[2. String Manipulation](#2-string-manipulation)** - **[3. Conversions \u0026 input](#3-conversions--input)** - **[4. Data structure](#4-data-structure)** - **[5. Tree Data Structure](#5-tree-data-structure)** - **[6. Graph Data Structure](#6-graph-data-structure)** - **[7. Algorithm](#7-algorithm)** - **[8. Sorting Algorithm](#8-sorting-algorithms)** - **[9. Searching Algorithm](#9-searching-algorithms)** - **[10. Tree Algorithm](#10-tree-algorithm)** - **[11. Graph Algorithm](#11-graph-algorithm)** - **[12. Dynamic programming](#12-dynamic-programming)** - **[13. Cryptography/Ciphers (encryptions)](#13-cryptographyciphers-encryptions)** - **[14. Design Pattern](#14-design-patterns)**\n\n---\n\n## 1. Math ([Read](./1.Math/README.md))\n\n- [GCD](./1.Math/1.GCD.go)\n\n- [LCM](./1.Math/2.LCM.go)\n\n- [Modular Exponentiation](./1.Math/3.ModularExponentiation.go)\n\n- [Permutation](./1.Math/9.Permutation.go)\n\n- [Power](./1.Math/6.Power.go)\n\n- [Prime Check](./1.Math/4.PrimeCheck.go)\n\n- [Prime Generate](./1.Math/5.GeneratePrime.go)\n\n- [Pythagoras](./1.Math/7.Pythagoras.go)\n\n- [Tower Of Hanoi](./1.Math/8.towerOfHanoi.go)\n\n- [Generate Pure Random Number](./1.Math/11.RandomNumber.go)\n\n- [Generate Secure Pure Random Number](./1.Math/12.SecureRandomNumber.go)\n  \n  \u003c!-- * [Python like list sort function](./1.Math/) --\u003e\n\n[comment]: \u003c\u003e (\\* [Sieve]\u0026#40;./math/sieve/\u0026#41;)\n\n## 2. String manipulation\n\n## 3. Conversions \u0026 input\n\n- [Input Different types ](3.conversion\u0026input/1.input%20Different%20types.go)\n- [Input any type ](3.conversion\u0026input/4.input%20any%20type.go)\n- [Input Slice](3.conversion\u0026input/2.input%20Slice.go)\n- [Input 2d Slice of any type](3.conversion\u0026input/3.input%202d%20Slice%20of%20any%20type.go)\n- [Sort Struct](3.conversion\u0026input/5.sort%20struct%20.go)\n- [Sort 2D Slice](3.conversion\u0026input/6.Sort%202d%20slice.go)\n\n[comment]: \u003c\u003e (\\* [input ]\u0026#40;3.conversion\u0026input/\u0026#41;)\n\n- [Byte to int,float,string,boolean,complex,slice](3.conversion\u0026input/7.byte%20to%20All.go)\n\n- [Int to byte,float,string,boolean,complex,slice](3.conversion\u0026input/)\n\n- [Float to byte,int,string,boolean,complex,slice](3.conversion\u0026input/)\n\n- [String to byte,int,float,boolean,complex,slice](3.conversion\u0026input/)\n\n- [Boolean to byte,int,float,string,complex,slice](3.conversion\u0026input/)\n\n- [complex to byte,int,float,string,boolean,slice](3.conversion\u0026input/)\n\n- [slice to byte,int,float,string,boolean,complex](3.conversion\u0026input/)\n\n- [Roman To Integer](3.conversion\u0026input/1.RomanToInt.go)\n\n## 4. Data structure\n\n- [Dynamic Array](./)\n\n- [Linked-List](./)\n  \n  - [Doubly Linked List](./)\n  - [Singly Linked List](./)\n  - [Cyclic Linked List AKA Looped Linked List](./)\n\n- [Stack](./)\n  \n  - [Array Based](./)\n  - [Custom Linked List](./)\n  - [Standard Library Container/List Based](./)\n\n- [Queue](./)\n  \n  - [Array Based](./)\n  - [Custom Linked List Based](./)\n  - [Standard Library Container/List Based](./)\n\n- [Set](./)\n\n- [Trie](./)\n\n- [Binary Tree](./)\n\n- [Binary Search Tree](./)\n\n[comment]: \u003c\u003e (\\* [AVL]\u0026#40;./\u0026#41;)\n\n[comment]: \u003c\u003e (\\* [B Tree]\u0026#40;./\u0026#41;)\n\n[comment]: \u003c\u003e (\\* [B+ Tree]\u0026#40;./\u0026#41;)\n\n- Heap:\n  \n  Binary Heap\n  Why is Binary Heap Preferred over BST for Priority Queue?\n  Binomial Heap\n  Fibonacci Heap\n  Heap Sort\n  K’th Largest Element in an array\n  Sort an almost sorted array/\n  Tournament Tree (Winner Tree) and Binary Heap\n\n- [Hashmap](./)\n\n- [Hash Table](./)\n\n- [Dictionary](./)\n\n- [Graph](./)\n\n## 5. Tree Data Structure\n\nhttps://en.wikipedia.org/wiki/List_of_data_structures\n\n- complete binary tree\n\n- full binary tree\n\n- Linked List Advantages\n\n- What is Data Structure\n\n- Heap Data Structure\n\n- Types of Trees in Data Structure\n\n- AVL Tree in Data Structure\n\n- B Tree in Data Structure\n\n- B+ Tree in Data Structure\n\n- Arrays in Data Structure\n\n- Graph in Data Structure\n\n- Graph Representation\n\n- Breadth First Search\n\n- Depth Limited Search\n\n- Pointers in Data Structure\n\nTypes of Graph in Data Structure\n\nTree Traversal in Data Structure\nTree Traversal Techniques\n\nSplay Tree in Data Structure\nSpanning Tree Algorithm\nSparse Matrix in Data Structure\n\nSkip List Data Structure\n\nKruskal’s Algorithm\nPrim’s Algorithm\nBFS VS DFS\nBCNF\nSkip List\n\nTrees and Tree Algorithms\n\n[comment]: \u003c\u003e (https://runestone.academy/runestone/books/published/pythonds/Trees/toctree.html)\n\n7.1. Objectives\n7.2. Examples of Trees\n7.3. Vocabulary and Definitions\n7.4. List of Lists Representation\n7.5. Nodes and References\n7.6. Parse Tree\n7.7. Tree Traversals\n7.8. Priority Queues with Binary Heaps\n7.9. Binary Heap Operations\n7.10. Binary Heap Implementation\n7.10.1. The Structure Property\n7.10.2. The Heap Order Property\n7.10.3. Heap Operations\n7.11. Binary Search Trees\n7.12. Search Tree Operations\n7.13. Search Tree Implementation\n7.14. Search Tree Analysis\n7.15. Balanced Binary Search Trees\n7.16. AVL Tree Performance\n7.17. AVL Tree Implementation\n7.18. Summary of Map ADT Implementations\n7.19. Summary\n7.20. Key Terms\n7.21. Discussion Questions\n7.22. Programming Exercises\n\n## 6. Graph Data Structure\n\nIntroduction, DFS and BFS :\n\nGraph and its representations\nBreadth First Traversal for a Graph\nDepth First Traversal for a Graph\nApplications of Depth First Search\nApplications of Breadth First Traversal\nGraph representations using set and hash\nFind Mother Vertex in a Graph\nTransitive Closure of a Graph using DFS\nFind K cores of an undirected Graph\nIterative Depth First Search\nCount the number of nodes at given level in a tree using BFS\nCount all possible paths between two vertices\nMinimum initial vertices to traverse whole matrix with given conditions\nShortest path to reach one prime to other by changing single digit at a time\nWater Jug problem using BFS\nCount number of trees in a forest\nBFS using vectors \u0026 queue as per the algorithm of CLRS\nLevel of Each node in a Tree from source node\nConstruct binary palindrome by repeated appending and trimming\nTranspose graph\nPath in a Rectangle with Circles\nHeight of a generic tree from parent array\nBFS using STL for competitive coding\nDFS for a n-ary tree (acyclic graph) represented as adjacency list\nMaximum number of edges to be added to a tree so that it stays a Bipartite graph\nA Peterson Graph Problem\nImplementation of Graph in JavaScript\nPrint all paths from a given source to a destination using BFS\nMinimum number of edges between two vertices of a Graph\nCount nodes within K-distance from all nodes in a set\nBidirectional Search\nMinimum edge reversals to make a root\nBFS for Disconnected Graph\nMove weighting scale alternate under given constraints\nBest First Search (Informed Search)\nNumber of pair of positions in matrix which are not accessible\nMaximum product of two non-intersecting paths in a tree\nDelete Edge to minimize subtree sum difference\nFind the minimum number of moves needed to move from one cell of matrix to another\nMinimum steps to reach target by a Knight | Set 1\nMinimum number of operation required to convert number x into y\nMinimum steps to reach end of array under constraints\nFind the smallest binary digit multiple of given number\nRoots of a tree which give minimum height\nStepping Numbers\nClone an Undirected Graph\nSum of the minimum elements in all connected components of an undirected graph\nCheck if two nodes are on same path in a tree\nA matrix probability question\nFind length of the largest region in Boolean Matrix\nIterative Deepening Search(IDS) or Iterative Deepening Depth First Search(IDDFS)\n\nGraph Cycle :\n\nDetect Cycle in a Directed Graph\nDetect cycle in an undirected graph\nDetect cycle in a direct graph using colors\nAssign directions to edges so that the directed graph remains acyclic\nDetect a negative cycle in a Graph | (Bellman Ford)\nCycles of length n in an undirected and connected graph\nDetecting negative cycle using Floyd Warshall\nCheck if there is a cycle with odd weight sum in an undirected graph\nCheck if a graphs has a cycle of odd length\nClone a Directed Acyclic Graph\nCheck loop in array according to given constraints\nDisjoint Set (Or Union-Find) | Set 1\nUnion-Find Algorithm | Set 2\nUnion-Find Algorithm | (Union By Rank and Find by Optimized Path Compression)\nMagical Indices in an array\n\nTopological Sorting :\n\nTopological Sorting\nAll topological sorts of a Directed Acyclic Graph\nKahn’s Algorithm for Topological Sorting\nMaximum edges that can be added to DAG so that is remains DAG\nLongest path between any pair of vertices\nLongest Path in a Directed Acyclic Graph\nLongest Path in a Directed Acyclic Graph | Set 2\nTopological Sort of a graph using departure time of vertex\nGiven a sorted dictionary of an alien language, find order of characters\n\nMinimum Spanning Tree :\n\n- [README.md](./)\n- [Spaning Tree](./)\n  - [Minimum Cost Spaning Tree](./)\n  - [Shortest Path Tree](./)\n    - [Prim's Algorithm](./)\n    - [Kruskals's Algorithm { O(|V|\\*|E|) }](./)\n    - [Kruskals's Algorithm { O(|V|\\* log|E|)}](./)\n    - [Dijkstra Algorithm](./)\n\nPrim’s Minimum Spanning Tree (MST))\nApplications of Minimum Spanning Tree Problem\nPrim’s MST for Adjacency List Representation\nKruskal’s Minimum Spanning Tree Algorithm\nBoruvka’s algorithm for Minimum Spanning Tree\nMinimum cost to connect all cities\nSteiner Tree\nReverse Delete Algorithm for Minimum Spanning Tree\nTotal number of Spanning Trees in a Graph\nMinimum Product Spanning Tree\n\nBackTracking :\n\nFind if there is a path of more than k length from a source\nTug of War\nThe Knight-Tour Problem\nRat in a Maze\nn-Queen’s Problem\nm Coloring Problem\nHamiltonian Cycle\nPermutation of numbers such that sum of two consecutive numbers is a perfect square\n\nShortest Paths :\n\nDijkstra’s shortest path algorithm\nDijkstra’s Algorithm for Adjacency List Representation\nBellman–Ford Algorithm\nFloyd Warshall Algorithm\nJohnson’s algorithm for All-pairs shortest paths\nShortest Path in Directed Acyclic Graph\nShortest path with exactly k edges in a directed and weighted graph\nDial’s Algorithm\nPrinting paths in Dijsktra’s Algorithm\nShortest path of a weighted graph where weight is 1 or 2\nMultistage Graph (Shortest Path)\nShortest path in an unweighted graph\nMinimize the number of weakly connected nodes\nBetweenness Centrality (Centrality Measure)\nComparison of Dijkstra’s and Floyd–Warshall algorithms\nKarp’s minimum mean (or average) weight cycle algorithm\n0-1 BFS (Shortest Path in a Binary Weight Graph)\nFind minimum weight cycle in an undirected graph\nMinimum Cost Path with Left, Right, Bottom and Up moves allowed\nMinimum edges to reverse to make path from a src to a dest\nFind Shortest distance from a guard in a Bank\n\nConnectivity :\n\nFind if there is a path between two vertices in a directed graph\nConnectivity in a directed graph\nArticulation Points (or Cut Vertices) in a Graph\nBiconnected Components\nBiconnected graph\nBridges in a graph\nEulerian path and circuit\nFleury’s Algorithm for printing Eulerian Path or Circuit\nStrongly Connected Components\nTransitive closure of a graph\nFind the number of islands\nFind the number of Islands | Set 2 (Using Disjoint Set)\nCount all possible walks from a source to a destination with exactly k edges\nEuler Circuit in a Directed Graph\nCount the number of non-reachable nodes\nFind the Degree of a Particular vertex in a Graph\nCheck if a given graph is tree or not\nMinimum edges required to add to make Euler Circuit\nEulerian Path in undirected graph\nFind if there is a path of more than k length\nLength of shortest chain to reach the target word\nPrint all paths from a given source to destination\nFind minimum cost to reach destination using train\nFind if an array of strings can be chained to form a circle | Set 1\nFind if an array of strings can be chained to form a circle | Set 2\nTarjan’s Algorithm to find strongly connected Components\nNumber of loops of size k starting from a specific node\nPaths to travel each nodes using each edge (Seven Bridges of Königsberg)\nNumber of cyclic elements in an array where we can jump according to value\nNumber of groups formed in a graph of friends\nMinimum cost to connect weighted nodes represented as array\nCount single node isolated sub-graphs in a disconnected graph\nCalculate number of nodes between two vertices in an acyclic Graph by Disjoint Union method\nDynamic Connectivity | Set 1 (Incremental)\nCheck if a graph is strongly connected | Set 1 (Kosaraju using DFS)\nCheck if a given directed graph is strongly connected | Set 2 (Kosaraju using BFS)\nCheck if removing a given edge disconnects a graph\nFind all reachable nodes from every node present in a given set\nConnected Components in an undirected graph\nk’th heaviest adjacent node in a graph where each vertex has weight\n\nMaximum Flow :\n\nFord-Fulkerson Algorithm for Maximum Flow Problem\nFind maximum number of edge disjoint paths between two vertices\nFind minimum s-t cut in a flow network\nMaximum Bipartite Matching\nChannel Assignment Problem\nPush Relabel- Set 1-Introduction\nPush Relabel- Set 2- Implementation\nKarger’s Algorithm- Set 1- Introduction and Implementation\nKarger’s Algorithm- Set 2 – Analysis and Applications\nDinic’s algorithm for Maximum Flow\nMax Flow Problem Introduction\n\nSTL Implementation of Algorithms :\n\nKruskal’s Minimum Spanning Tree using STL in C++\nPrim’s Algorithm using Priority Queue STL\nDijkstra’s Shortest Path Algorithm using STL\nDijkstra’s Shortest Path Algorithm using set in STL\nGraph implementation using STL for competitive programming | Set 2 (Weighted graph)\n\nHard Problems :\n\nGraph Coloring (Introduction and Applications)\nGreedy Algorithm for Graph Coloring\nTraveling Salesman Problem (TSP) Implementation\nTravelling Salesman Problem (Naive and Dynamic Programming)\nTravelling Salesman Problem (Approximate using MST)\nVertex Cover Problem | Set 1 (Introduction and Approximate Algorithm)\nK Centers Problem | Set 1 (Greedy Approximate Algorithm)\nErdos Renyl Model (for generating Random Graphs)\nClustering Coefficient in Graph Theory\nChinese Postman or Route Inspection | Set 1 (introduction)\nHierholzer’s Algorithm for directed graph\n\nMisc :\n\nNumber of triangles in an undirected Graph\nNumber of triangles in directed and undirected Graph\nCheck whether a given graph is Bipartite or not\nSnake and Ladder Problem\nMinimize Cash Flow among a given set of friends who have borrowed money from each other\nBoggle (Find all possible words in a board of characters)\nHopcroft Karp Algorithm for Maximum Matching-Introduction\nHopcroft Karp Algorithm for Maximum Matching-Implementation\nMinimum Time to rot all oranges\nFind same contents in a list of contacts\nHypercube Graph\nCheck for star graph\nOptimal read list for a given number of days\nPrint all jumping numbers smaller than or equal to a given value\nFibonacci Cube Graph\nBarabasi Albert Graph (for Scale Free Models)\nConstruct a graph from given degrees of all vertices\nDegree Centrality (Centrality Measure)\nKatz Centrality (Centrality Measure)\nMathematics | Graph theory practice questions\n2-Satisfiability (2-SAT) Problem\nDetermine whether a universal sink exists in a directed graph\nNumber of sink nodes in a graph\nLargest subset of Graph vertices with edges of 2 or more colors\nNetworkX : Python software package for study of complex networks\nGenerate a graph using Dictionary in Python\nCount number of edges in an undirected graph\nTwo Clique Problem (Check if Graph can be divided in two Cliques)\nCheck whether given degrees of vertices represent a Graph or Tree\nFinding minimum vertex cover size of a graph using binary search\nStable Marriage Problem\nSum of dependencies in a graph\n\n## 7. Algorithm\n\n[comment]: \u003c\u003e (https://en.wikipedia.org/wiki/List_of_algorithms)\n\n- [Rabin-Karp Algorithm ](./10.Algorithm/Rabin-Karp Algorithm.go)\n  Link list\n\nHeap\nheapify\n\nSorting\nMarge sort\nQuick sort\n\nDivide and conquer\nKnapsack\nHuffman coding\nPrims and kuskals\nDijkstra\nGreedy\nMulti stage graph\nFloyd warshall\nBelmanford\nDynamic programming\nGraph\nHamiltonian cycle\nRobin karp\n\nBinary tree\nBinary search tree\nAVL tree\nB tree and B+ tree\nDFS\nBFS\n\nHashing\n\nTower of hanoi\n\nSingle source shortest path\n\n## 8. Sorting Algorithms :\n\n- [Selection Sort](./4.Sort/1.SelectionSort.go) \u003cbr\u003e\n- [Bubble Sort](./4.Sort/2.bubbleSort.go) \u003cbr\u003e\n  - [Recursive Bubble Sort](./4.Sort/3.RecursiveBubbleSort.go) \u003cbr\u003e\n- [Insertion Sort](./4.Sort/4.InsertionSort.go) \u003cbr\u003e\n  - [Recursive Insertion Sort](./4.Sort/5.RecursiveInsertionSort.go) \u003cbr\u003e\n- [ Merge Sort Sort](./4.Sort/6.MergeSort.go) \u003cbr\u003e\n  - [Iterative Merge Sort](./4.Sort/7.IterativeMergeSort.go) \u003cbr\u003e\n- [Quick Sort ](./4.Sort/8.QuickSort.go) \u003cbr\u003e\n  - [Iterative Quick Sort](./4.Sort/9.IterativeQuickSort.go) \u003cbr\u003e\n- [Heap sort](./4.Sort/10.HeapSort.go) \u003cbr\u003e\n- [Counting Sort](./4.Sort/11.CountingSort.go) \u003cbr\u003e\n- [Radix Sort](./4.Sort/12.RedixSort.go) \u003cbr\u003e\n- [Bucket Sort](./4.Sort/13.BucketSort.go) \u003cbr\u003e\n- [ShellSort](./4.Sort/14.ShellSort.go) \u003cbr\u003e\n- [TimSort](./4.Sort/15.TimSort.go) \u003cbr\u003e\n- [Comb Sort](./4.Sort/16.CombSort.go) \u003cbr\u003e\n- [Pigeonhole Sort ](./4.Sort/17.PigeonholeSort.go) \u003cbr\u003e\n- [Cycle Sort](./4.Sort/18.CycleSort.go) \u003cbr\u003e\n- [Cocktail Sort](./4.Sort/19.CocktailSort.go) \u003cbr\u003e\n- [Strand Sort](./4.Sort/20.StrandSort.go) \u003cbr\u003e\n- [Bitonic Sort](./4.Sort/21.BitonicSort.go) \u003cbr\u003e\n- [Pancake sorting](./4.Sort/22.Pancake%20sorting.go) \u003cbr\u003e\n- [Binary Insertion Sort](./4.Sort/23.Binary%20Insertion%20Sort.go) \u003cbr\u003e\n- [BogoSort or Permutation Sort](./4.Sort/24.BogoSort%20or%20Permutation%20Sort.go) \u003cbr\u003e\n- [Gnome Sort](./4.Sort/25.Gnome%20Sort.go) \u003cbr\u003e\n- [Sleep Sort – The King of Laziness / Sorting while Sleeping](./4.Sort/26.Sorting%20while%20Sleeping.go) \u003cbr\u003e\n- [Structure Sorting (By Multiple Rules) in C++](\u003c./4.Sort/27.Structure%20Sorting%20(By%20Multiple%20Rules)%20in%20C++.go\u003e) \u003cbr\u003e\n- [Stooge Sort](./4.Sort/28.Stooge%20Sort.go) \u003cbr\u003e\n- [Tag Sort (To get both sorted and original)](\u003c./4.Sort/29.Tag%20Sort%20(To%20get%20both%20sorted%20and%20original).go\u003e) \u003cbr\u003e\n- [Tree Sort](./4.Sort/30.Tree%20Sort.go) \u003cbr\u003e\n- [Cartesian Tree Sorting](./4.Sort/31.Cartesian%20Tree%20Sorting.go) \u003cbr\u003e\n- [Odd-Even Sort / Brick Sort](./4.Sort/32.Odd-Even%20Sort%20-%20Brick%20Sort.go) \u003cbr\u003e\n- [QuickSort on Singly Linked List](./4.Sort/33.QuickSort%20on%20Singly%20Linked%20List.go) \u003cbr\u003e\n- [QuickSort on Doubly Linked List](./4.Sort/34.QuickSort%20on%20Doubly%20Linked%20List.go) \u003cbr\u003e\n- [3-Way QuickSort (Dutch National Flag)](\u003c./4.Sort/35.3-Way%20QuickSort%20(Dutch%20National%20Flag).go\u003e) \u003cbr\u003e\n- [Merge Sort for Linked Lists](./4.Sort/36.Merge%20Sort%20for%20Linked%20Lists.go) \u003cbr\u003e\n- [Merge Sort for Doubly Linked List](./4.Sort/37.Merge%20Sort%20for%20Doubly%20Linked%20List.go) \u003cbr\u003e\n- [3-way Merge Sort](./4.Sort/38.3-way%20Merge%20Sort.go) \u003cbr\u003e\n\n## 9. Searching Algorithms :\n\n- [Linear Search](./5.Search/1.LinearSearch.go)\n- [Binary Search in Array using Recurtion](./5.Search/2.Binarysearch%20in%20Array-recursive.go)\n- [Binary Search in Array using loop](./5.Search/2.Binarysearch%20in%20Array%20loop.go)\n- [Binary Search](./)\n- [Interpolation Search](./)\n\n## 10. Tree Algorithm\n\n## 11. Graph Algorithm\n\n## 12. Dynamic programming\n\nDynamic programming : 80\n\n- 0-1 knapsack problem - 6\n  \n  - [Subset sum](./7.DynamicProgramming/Subset%20Sum%20Problem.go)\n  \n  - Equal sum partition\n  \n  - Count of subset sum\n  \n  - Minimum subset sum diff\n  \n  - Target sum\n  \n  - \\# of subset \u0026 genis\n\n- Unbound knapsack problem - 5\n\n- Fibonacci - 7\n\n- Longest common subsequence (LCS) - 15\n\n- Longest increasing subsequence (LIS) - 10\n\n- Kadane’s algorithm - 6\n\n- Matrix chain multiplication - 7\n\n- DP on trees - 4\n\n- DP on grid - 14\n\n- Others - 5\n  \n  ## 13. Cryptography/Ciphers (encryptions)\n\n- [Bcrypt](./11.Ciphers/2.bcrypt/main.go) \u003cbr\u003e\n\n- [Scrypt](./11.Ciphers/3.Scrypt/main.go) \u003cbr\u003e\n\n- [SHA](./11.Ciphers/4.sha/main.go) \u003cbr\u003e\n\n- [hmac](./11.Ciphers/5.hmac/main.go) \u003cbr\u003e\n\n- [Caesar](./)\n\n- [Diffie Hellman Key Exchange](./)\n\n- [Polybius](./)\n\n- [Rot13](./)\n\n- [Rsa](./)\n\n- [Xor](./)\n\n## 14. Design Patterns\n\n- [Creational Patterns](./) \u003cbr\u003e\n  - [Abstract Factory](./) -Provides an interface for creating families of releated objects \u003cbr\u003e\n  - [Builder](./) -Builds a complex object using simple objects\u003cbr\u003e\n  - [Factory Method](./) -Defers instantiation of an object to a specialized function for creating instances \u003cbr\u003e\n  - [Object Pool](./) -Instantiates and maintains a group of objects instances of the same type\u003cbr\u003e\n  - [Singleton](./) -Restricts instantiation of a type to one object\u003cbr\u003e\n- [Structural Patterns](./) \u003cbr\u003e\n  - [Bridge](./) -Decouples an interface from its implementation so that the two can vary independently\u003cbr\u003e\n  - [Composite](./) -Encapsulates and provides access to a number of different objects\u003cbr\u003e\n  - [Decorator](./) -Adds behavior to an object, statically or dynamically \u003cbr\u003e\n  - [Facade](./) -Uses one type as an API to a number of others\u003cbr\u003e\n  - [Flyweight](./) -Reuses existing instances of objects with similar/identical state to minimize resource usage\u003cbr\u003e\n  - [Proxy](./) -Provides a surrogate for an object to control it's actions\u003cbr\u003e\n- [Behavioral Patterns](./) \u003cbr\u003e\n  - [Chain of Responsibility](./) -Avoids coupling a sender to receiver by giving more than object a chance to handle the request\u003cbr\u003e\n  - [Command](./) -Bundles a command and arguments to call later\u003cbr\u003e\n  - [Mediator](./) -Connects objects and acts as a proxy\u003cbr\u003e\n  - [Memento](./) -Generate an opaque token that can be used to go back to a previous state\u003cbr\u003e\n  - [Observer](./) -Provide a callback for notification of events/changes to data\u003cbr\u003e\n  - [Registry](./) -Keep track of all subclasses of a given class\u003cbr\u003e\n  - [State](./) -Encapsulates varying behavior for the same object based on its internal state\u003cbr\u003e\n  - [Strategy](./) -Enables an algorithm's behavior to be selected at runtime\u003cbr\u003e\n  - [Template](./) -Defines a skeleton class which defers some methods to subclasses\u003cbr\u003e\n  - [Visitor](./) -Separates an algorithm from an object on which it operates\u003cbr\u003e\n- [Synchronization Patterns](./) \u003cbr\u003e\n  - [Condition Variable](./) -Provides a mechanism for threads to temporarily give up access in order to wait for some condition \u003cbr\u003e\n  - [Lock/Mutex](./) -Enforces mutual exclusion limit on a resource to gain exclusive access \u003cbr\u003e\n  - [Monitor](./) -Combination of mutex and condition variable patterns\u003cbr\u003e\n  - [Read-Write Lock](./) -Allows parallel read access, but only exclusive access on write operations to a resource \u003cbr\u003e\n  - [Semaphore](./) -Allows controlling access to a common resource\u003cbr\u003e\n- [Concurrency Patterns](./) \u003cbr\u003e\n  - [N-Barrier](./) -Prevents a process from proceeding until all N processes reach to the barrier \u003cbr\u003e\n  - [Bounded Parallelism](./) -Completes large number of independent tasks with resource limits\u003cbr\u003e\n  - [Broadcast](./) -Transfers a message to all recipients simultaneously\u003cbr\u003e\n  - [Coroutines](./) -Subroutines that allow suspending and resuming execution at certain locations \u003cbr\u003e\n  - [Generators](./) -Yields a sequence of values one at a time\u003cbr\u003e\n  - [Reactor](./) -Demultiplexes service requests delivered concurrently to a service handler and dispatches them syncronously to the associated request handlers\u003cbr\u003e\n  - [Parallelism](./) -Completes large number of independent tasks\u003cbr\u003e\n  - [Producer Consumer](./) -Separates tasks from task executions\u003cbr\u003e\n- [Messaging Patterns](./) \u003cbr\u003e\n  - [Fan-In](./) -Funnels tasks to a work sink (e.g. server)\u003cbr\u003e\n  - [Fan-Out](./) -Distributes tasks among workers (e.g. producer) \u003cbr\u003e\n  - [Futures \u0026 Promises](./) -Acts as a place-holder of a result that is initially unknown for synchronization purposes\u003cbr\u003e\n  - [Publish/Subscribe](./) -Passes information to a collection of recipients who subscribed to a topic\u003cbr\u003e\n  - [Push \u0026 Pull](./) -Distributes messages to multiple workers, arranged in a pipeline\u003cbr\u003e\n- [Stability Patterns](./) \u003cbr\u003e\n  - [Bulkheads](./) -Enforces a principle of failure containment (i.e. prevents cascading failures) \u003cbr\u003e\n  - [Circuit-Breaker](./) -Stops the flow of the requests when requests are likely to fail\u003cbr\u003e\n  - [Deadline](./) -Allows clients to stop waiting for a response once the probability of response becomes low (e.g. after waiting 10 seconds for a page refresh)\u003cbr\u003e\n  - [Fail-Fast](./) -Checks the availability of required resources at the start of a request and fails if the requirements are not satisfied\u003cbr\u003e\n  - [Handshaking](./) -Asks a component if it can take any more load, if it can't, the request is declined\u003cbr\u003e\n  - [Steady-State](./) -For every service that accumulates a resource, some other service must recycle that resource\u003cbr\u003e\n- [Profiling Patterns](./) \u003cbr\u003e\n  - [Timing Functions](./) -Wraps a function and logs the execution\u003cbr\u003e\n- [Idioms](./) \u003cbr\u003e\n  - [Functional Options](./) -Allows creating clean APIs with sane defaults and idiomatic overrides\u003cbr\u003e\n- [Anti-Patterns](./) \u003cbr\u003e\n  - [Cascading Failures](./) -A failure in a system of interconnected parts in which the failure of a part causes a domino effect\u003cbr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskshahriarahmedraka%2Fdatastructure-algorithm-designpatterns-in-golang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskshahriarahmedraka%2Fdatastructure-algorithm-designpatterns-in-golang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskshahriarahmedraka%2Fdatastructure-algorithm-designpatterns-in-golang/lists"}