{"id":17888498,"url":"https://github.com/braswelljr/algorithm","last_synced_at":"2026-03-11T17:02:55.528Z","repository":{"id":39987212,"uuid":"441074420","full_name":"braswelljr/alGOrithm","owner":"braswelljr","description":"Algorithms and data structures in Golang","archived":false,"fork":false,"pushed_at":"2024-07-31T23:23:09.000Z","size":182,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-08-01T02:52:46.309Z","etag":null,"topics":["algorithms","data-structures","golang"],"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/braswelljr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-23T05:40:21.000Z","updated_at":"2024-07-31T23:23:09.000Z","dependencies_parsed_at":"2024-04-29T14:03:26.856Z","dependency_job_id":null,"html_url":"https://github.com/braswelljr/alGOrithm","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/braswelljr%2FalGOrithm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braswelljr%2FalGOrithm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braswelljr%2FalGOrithm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/braswelljr%2FalGOrithm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/braswelljr","download_url":"https://codeload.github.com/braswelljr/alGOrithm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221832925,"owners_count":16888337,"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":["algorithms","data-structures","golang"],"created_at":"2024-10-28T13:37:38.427Z","updated_at":"2026-03-11T17:02:55.472Z","avatar_url":"https://github.com/braswelljr.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AL[GO](#)RITHM\nAlgorithms and data structures in Golang\n\n## Data Structures\n\nData Structures are representations of data sets in a way which makes storage and performing of operations of data very easy.\n\n### Classification of Data Structures\n\n- #### _[Linear](data-structures/linear)_\n  - [List](data-structures/linear/list/list.go) : is an abstract data type that represents a finite number of ordered values, where the same value may occur more than once.\n  - [Set](data-structures/linear/set/set.go) : is an abstract data type can store unique values without any particular order.\n  - [Tuple](data-structures/linear/tuple/tuple.go) : is a finite ordered list (sequence) of elements. Tuple is a reference type.\n  - [Queue](data-structures/linear/queue/queue.go) : is an abstract data type that implements a First-In-First-Out (`FIFO`) queue of generic items.\n  - [Stack](data-structures/linear/stack/stack.go) : is an abstract data type that operates on the concept of the Last-In-First-Out (`LIFO`) principle.\n  - [Heap](data-structures/linear/heap/heap.go) : is a specialized tree-based data structure that satisfies the heap property: for any node, the value of that node is greater than or equal to the values of its children.\n- #### _[Non - Linear](#)_\n  - [Trees](data-structures/non-linear/trees/trees.go) : is a data structure that consists of a set of nested nodes, each node having a value and a set of child nodes.\n  - [Tables](data-structures/non-linear/table/table.go) : is a data structure that consists of a set of rows and columns, each row having a set of columns. The table is a two-dimensional array. The table is a reference type.\n  - [Containers](data-structures/non-linear/container/container.go) : is a data structure that consists of a set of elements, each element having a key and a value. The container is a reference type. The container is a reference type.\n- #### _[Homogeneous](#)_\n  - [Two Dimensional Arrays](#)\n  - [Multi Dimensional Arrays](#)\n- #### _[Heterogeneous](#)_\n  - [Linked List](data-structures/heterogeneous/linkedList): is a data structure that consists of a set of nodes, each node having a value and a reference to the next node.\n    - [Single Linked List](data-structures/heterogeneous/linkedList/singleLinkedList/singleLinkedList.go) : is a data structure that consists of a set of nodes, each node having a value and a reference to the next node. The list is a reference type.\n    - [Double Linked List](data-structures/heterogeneous/linkedList/doubleLinkedList/doubleLinkedList.go) : is a data structure that consists of a set of nodes, each node having a value and a reference to the previous and next node. The list is a reference type.\n    - [Circular Linked List](data-structures/heterogeneous/linkedList/circularLinkedList) : is a data structure which has the last item contains link of the first element as next and the first element has a link to the last element as previous. The list is a reference type.\n      - [Circular Single Linked List](data-structures/heterogeneous/linkedList/circularLinkedList/circularSingleLinkedList/circularSingleLinkedList.go) : is a data structure which has the last item contains link of the first element as next and the first element has a link to the last element as previous. The list is a reference type.\n      - [Circular Double Linked List](data-structures/heterogeneous/linkedList/circularLinkedList/circularDoubleLinkedList/circularDoubleLinkedList.go) : is a data structure which has the last item contains link of the first element as next and the first element has a link to the last element as previous. The list is a reference type.\n  - [Ordered List](data-structures/heterogeneous/orderedList) : is a data structure that consists of a set of nodes, each node having a value and a reference to the next node. The list is a reference type.\n  - [Unordered List](data-structures/heterogeneous/unorderedList) : is a data structure that consists of a set of nodes, each node having a value and a reference to the next node. The list is a reference type.\n- #### _[Dynamic](#)_\n  - [Dictionaries](#)\n  - [Tree Sets](#)\n  - [Sequences](#)\n\n## Algorithms\n\nAlgorithm is a set of instructions that describes how to get something done.\n\n### Classification of Algorithms\n\n- #### _[SORT](algorithms/sort)_\n  - [Bubble Sort](algorithms/sort/bubbleSort/bubbleSort.go) : is a simple sorting algorithm that repeatedly steps through the list, compares elements and swaps them if they are in the wrong order. Bubble Sort has a **time complexity** of \u003ccode\u003eO(n\u003csup\u003e2\u003c/sup\u003e)\u003c/code\u003e.\n  - [Merge Sort](algorithms/sort/mergeSort/mergeSort.go) : is a comparison based sort that recursively splits the list into smaller sub-lists until the sub-lists are small enough to be sorted individually. Merge Sort was invented by [`John Von Neumman`](https://en.wikipedia.org/wiki/John_von_Neumann) in _1945_. It has a **time complexity** of \u003ccode\u003eO(n log n)\u003c/code\u003e.\n  - [Comb Sort](#) : is a sorting algorithm that uses a gap sequence to sort the array. It is a variant of the Bubble Sort algorithm. Comb Sort has a **time complexity** of \u003ccode\u003eO(n\u003csup\u003e2\u003c/sup\u003e)\u003c/code\u003e. The algorithm is a variation of the [bubble sort](algorithms/sort/bubbleSort/bubbleSort.go) algorithm. It was originally designed by [`Włodzimierz Dobosiewicz`](#) and [`Artur Borowy`](#) in 1980\n  - [Heap Sort](algorithms/sort/heapSort/heapSort.go) : is a comparison based sort that uses a heap data structure to sort the list. Heap Sort has a **time complexity** of \u003ccode\u003eO(n log n)\u003c/code\u003e.\n  - [Quick Sort](algorithms/sort/quickSort/quickSort.go) : is a comparison based sort that uses a divide and conquer strategy to sort the list. Quick Sort has a **time complexity** of \u003ccode\u003eO(n log n)\u003c/code\u003e.\n  - [Selection Sort](algorithms/sort/selectionSort/selectionSort.go) : is a comparison based sort that finds the smallest element in the list and places it at the beginning. Selection Sort has a **time complexity** of \u003ccode\u003eO(n\u003csup\u003e2\u003c/sup\u003e)\u003c/code\u003e.\n  - [Insertion Sort](algorithms/sort/insertionSort/insertionSort.go) : is a comparison based sort that builds the final sorted array one item at a time. Insertion Sort has a **time complexity** of \u003ccode\u003eO(n\u003csup\u003e2\u003c/sup\u003e)\u003c/code\u003e.\n  - [Radix Sort](algorithms/sort/radixSort/radixSort.go) : is a comparison based sort that sorts the list by grouping the list into buckets.  It avoids comparison by creating and distributing elements into buckets according to their radix. Radix Sort has a **time complexity** of \u003ccode\u003eO(n\u003csup\u003e2\u003c/sup\u003e)\u003c/code\u003e. `uncomplete`\n  - [Bucket Sort](#)\n  - [Shell Sort](#)\n  - [Tree Sort](#)\n  - [Counting Sort](#)\n  - [Smooth Sort](#)\n  - [Bogo Sort](#)\n  - [Cycle Sort](#)\n  - [Gnome Sort](#)\n  - [Stooge Sort](#)\n\n- #### _[Recursion](algorithms/recursion)_\n  - [Fibonacci](algorithms/recursion/fibonacci/fibonacci.go) : is a recursive algorithm that adds the two preceding numbers to produce the next number in the sequence.\n  - [Factorial](algorithms/recursion/factorial/factorial.go) : is a recursive algorithm that multiplies all the preceding numbers to produce the next number in the sequence.\n  - [Euclidean / GCD](algorithms/recursion/euclidean/euclidean.go) : is a recursive algorithm that finds the greatest common divisor of two numbers.\n  - [LCM](algorithms/recursion/lcm/lcm.go) : is a recursive algorithm that finds the least common multiple of two numbers.\n  - [Tower of Hanoi](algorithms/recursion/towerOfHanoi/tower_of_hanoi.go) : is a recursive algorithm that moves a stack of disks from one tower to another.\n  - [Ackermann Function](algorithms/recursion/ackermann/ackermann.go) : is a recursive algorithm that finds the value of the Ackermann function. It is a total recursive function that can be defined in terms of itself.\n  - [McCarthy Function](algorithms/recursion/mccarthy91/mccarthy91.go) : is a recursive algorithm that finds the value of the McCarthy function. It is a total recursive function that can be defined in terms of itself.\n  - [Palindrome](algorithms/recursion/palindrome/palindrome.go) : is an algorithm that checks if a word is equal to its reversed.\n\n- #### [Search](algorithms/search)\n  - [Binary Search](algorithms/search/binarySearch/binarySearch.go) : is a search algorithm that finds the position of a target value in a sorted array. It has a **time complexity** of \u003ccode\u003eO(log n)\u003c/code\u003e and a **space complexity** of \u003ccode\u003eO(1)\u003c/code\u003e.\n  - [Interpolation Search](algorithms/search/interpolationSearch/interpolationSearch.go) : is a search algorithm that finds the position of a target value in a sorted array.\n  - [Jump to Search](algorithms/search/jumpSearch/jumpSearch.go) : is a search algorithm that finds the position of a target value in a sorted array. It is a variation of the [Binary Search](algorithms/search/binarySearch/binarySearch.go) algorithm. It has a **time complexity** of \u003ccode\u003eO(log n)\u003c/code\u003e and a **space complexity** of \u003ccode\u003eO(1)\u003c/code\u003e.\n  - [Linear Search](algorithms/search/linearSearch/linearSearch.go) : is a search algorithm that finds the position of a target value in a sorted array. It has a **time complexity** of \u003ccode\u003eO(n)\u003c/code\u003e and a **space complexity** of \u003ccode\u003eO(1)\u003c/code\u003e.\n  - [Ternary Search](algorithms/search/ternarySearch/ternarySearch.go) : is a search algorithm that finds the position of a target value in a sorted array.\n  - [Breadth-First Search](algorithms/search/breadthFirstSearch/breadthFirstSearch.go) : is a search algorithm that finds the position of a target value in a graph. It has a **time complexity** of \u003ccode\u003eO(n)\u003c/code\u003e and a **space complexity** of \u003ccode\u003eO(n)\u003c/code\u003e.\n- #### [Cipher](algorithms/cipher)\n  - [Caesar Cipher](algorithms/cipher/caesarCipher/caesarCipher.go) : is a cipher that shifts each letter in a message by a certain number of places. It has a time complexity of \u003ccode\u003eO(n)\u003c/code\u003e.\n  - [Vigenere Cipher](algorithms/cipher/vigenereCipher/vigenereCipher.go) : is a cipher that shifts each letter in a message by a certain number of places. It has a time complexity of \u003ccode\u003eO(n)\u003c/code\u003e.\n  - [Hill Cipher](#) : is a cipher that shifts each letter in a message by a certain number of places. It has a time complexity of \u003ccode\u003eO(n)\u003c/code\u003e.`uncomplete`\n  - [Rot13 Cipher](#) : is a cipher that shifts each letter in a message by 13 number of places. It has a time complexity of \u003ccode\u003eO(n)\u003c/code\u003e.\n- #### _[Graph](algorithms/graph)_\n  - [A* Search](algorithms/graph/aStarSearch/aStarSearch.go) : is a search algorithm that finds the shortest path between two nodes in a graph. It has a **time complexity** of \u003ccode\u003eO(n)\u003c/code\u003e and a **space complexity** of \u003ccode\u003eO(b^d)\u003c/code\u003e.\n  - [Dijkstra's Algorithm](algorithms/graph/dijkstra/dijkstra.go) : is a search algorithm that finds the shortest path between two nodes in a graph. It has a **time complexity** of \u003ccode\u003eO(n)\u003c/code\u003e and a **space complexity** of \u003ccode\u003eO(n)\u003c/code\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbraswelljr%2Falgorithm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbraswelljr%2Falgorithm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbraswelljr%2Falgorithm/lists"}