├── .circleci └── config.yml ├── .editorconfig ├── .gitignore ├── AlgorithmsAndDataStructures.sln ├── AlgorithmsAndDataStructures.sln.licenseheader ├── CONTRIBUTING.md ├── GemFile ├── LICENSE ├── README.md ├── Source ├── .gitignore ├── Algorithms │ ├── GraphTraversal │ │ ├── Dijkstra.cs │ │ ├── GraphEdge.cs │ │ ├── GraphNode.cs │ │ ├── bfs.cs │ │ └── dfs.cs │ ├── Hashing │ │ └── RollingHash.cs │ ├── PatternSearch │ │ ├── BoyerMooreSearch.cs │ │ ├── KMPSearch.cs │ │ ├── NaiveSearch.cs │ │ └── RabinKarpSearch.cs │ ├── Search │ │ ├── BinarySearch.cs │ │ ├── ExponentialSearch.cs │ │ ├── FibonacciSearch.cs │ │ ├── HashTableSearch.cs │ │ ├── InterpolationSearch.cs │ │ ├── JumpSearch.cs │ │ ├── LinearSearch.cs │ │ └── TernarySearch.cs │ ├── Sort │ │ ├── BubbleSort.cs │ │ ├── HeapSort.cs │ │ ├── InsertionSort.cs │ │ ├── MergeSort.cs │ │ ├── QuickSort.cs │ │ ├── RadixSort.cs │ │ ├── SelectionSort.cs │ │ ├── StabilityCheckableVersions │ │ │ ├── BubbleSort.cs │ │ │ ├── Element.cs │ │ │ ├── InsertionSort.cs │ │ │ ├── MergeSort.cs │ │ │ ├── QuickSort.cs │ │ │ ├── RadixSort.cs │ │ │ ├── Readme.txt │ │ │ ├── SelectionSort.cs │ │ │ └── Utils.cs │ │ └── Utils.cs │ └── SubarraySearch │ │ └── Naive.cs ├── AlgorithmsAndDataStructures.csproj ├── AlgorithmsAndDataStructures.xml ├── CSFundamentals.xml ├── DataStructures │ ├── BinaryHeaps │ │ ├── API │ │ │ ├── BinaryHeapBase.cs │ │ │ └── IBinaryHeap.cs │ │ ├── MaxBinaryHeap.cs │ │ ├── MinBinaryHeap.cs │ │ └── MinMaxBinaryHeap.cs │ ├── LinkedLists │ │ ├── API │ │ │ ├── LinkedListBase.cs │ │ │ └── LinkedNode.cs │ │ ├── DoublyLinkedList.cs │ │ ├── DoublyLinkedNode.cs │ │ ├── DoublyLinkedSortedList.cs │ │ ├── NotFoundException.cs │ │ ├── SinglyLinkedList.cs │ │ ├── SinglyLinkedNode.cs │ │ └── Utils.cs │ ├── StringStructures │ │ ├── LLPPS.cs │ │ ├── StringSuffix.cs │ │ ├── SuffixArray.cs │ │ ├── SuffixTree.cs │ │ └── SuffoxTreeNode.cs │ └── Trees │ │ ├── Binary │ │ ├── API │ │ │ ├── BinarySearchTreeBase.cs │ │ │ ├── BinaryTreeNode.cs │ │ │ └── IBinaryTreeNode.cs │ │ ├── AVLTree.cs │ │ ├── AVLTreeNode.cs │ │ ├── BinarySearchTree.cs │ │ ├── BinarySearchTreeNode.cs │ │ ├── Readme.txt │ │ ├── RedBlackTree.cs │ │ ├── RedBlackTreeNode.cs │ │ └── TreeNodeRelationException.cs │ │ └── Nary │ │ ├── API │ │ ├── BTreeBase.cs │ │ ├── BTreeNodeBase.cs │ │ └── IBTreeNode.cs │ │ ├── BPlusTree.cs │ │ ├── BPlusTreeNode.cs │ │ ├── BTree.cs │ │ ├── BTreeNode.cs │ │ └── Readme.txt └── Decoration │ ├── AlgorithmAttribute.cs │ ├── DataStructureAttribute.cs │ ├── SpaceComplexityAttribute.cs │ └── TimeComplexityAttribute.cs ├── Tests ├── .gitignore ├── Algorithms │ ├── GraphTraversal │ │ ├── BfsTests.cs │ │ ├── DfsTests.cs │ │ ├── DijkstraTests.cs │ │ └── Images │ │ │ ├── BFS-Iterative-StartA.png │ │ │ ├── BFS-Iterative-StartE.png │ │ │ ├── BFS-Recursive-StartA.png │ │ │ ├── BFS-Recursive-StartE.png │ │ │ ├── DFS-Iterative-StartA.PNG │ │ │ ├── DFS-Iterative-StartE.PNG │ │ │ ├── DFS-Recursive-StartA.PNG │ │ │ ├── DFS-Recursive-StartE.PNG │ │ │ ├── Disjkstra.png │ │ │ └── Graph-BFS-DFS.PNG │ ├── Hashing │ │ └── RollingHashTests.cs │ ├── PatternSearch │ │ ├── BoyerMooreSearchTests.cs │ │ ├── KMPSearchTests.cs │ │ ├── NaiveSearchTests.cs │ │ └── RabinKarpSearchTests.cs │ ├── Search │ │ ├── BinarySearchTests.cs │ │ ├── ExponentialSearchTests.cs │ │ ├── FibonacciSearchTests.cs │ │ ├── HashTableSearchTests.cs │ │ ├── Images │ │ │ ├── BinarySearch-Distinct.png │ │ │ ├── BinarySearch-Duplicate.png │ │ │ ├── BinarySearch-Missing.png │ │ │ ├── ExponentialSearch-Distinct.png │ │ │ ├── ExponentialSearch-Duplicate.png │ │ │ ├── ExponentialSearch-Missing.png │ │ │ ├── FibonacciSearch-Distinct.png │ │ │ ├── FibonacciSearch-Duplicate.png │ │ │ ├── FibonacciSearch-Missing.png │ │ │ ├── HashTableSearch-Distinct.png │ │ │ ├── HashTableSearch-Duplicate.png │ │ │ ├── HashTableSearch-Missing.png │ │ │ ├── InterpolationSearch-Distinct.png │ │ │ ├── InterpolationSearch-Duplicate.png │ │ │ ├── InterpolationSearch-Missing.png │ │ │ ├── JumpSearch-Distinct.png │ │ │ ├── JumpSearch-Duplicate.png │ │ │ ├── JumpSearch-Missing.png │ │ │ ├── LinearSearch-Distinct.png │ │ │ ├── LinearSearch-Duplicate.png │ │ │ ├── LinearSearch-Missing.png │ │ │ ├── TernarySearch-Distinct.png │ │ │ ├── TernarySearch-Duplicate.png │ │ │ └── TernarySearch-Missing.png │ │ ├── InterpolationSearchTests.cs │ │ ├── JumpSearchTests.cs │ │ ├── LinearSearchTests.cs │ │ ├── SearchTests.cs │ │ └── TernarySearchTests.cs │ ├── Sort │ │ ├── BubbleSortTests.cs │ │ ├── Constants.cs │ │ ├── HeapSortTests.cs │ │ ├── Images │ │ │ ├── BubbleSort-Part1.png │ │ │ ├── BubbleSort-Part2.png │ │ │ ├── BubbleSort-Part3.png │ │ │ ├── BubbleSort-Part4.png │ │ │ ├── HeapSort-Part1.png │ │ │ ├── HeapSort-Part2.png │ │ │ ├── HeapSort-Part3.png │ │ │ ├── HeapSort-Part4.png │ │ │ ├── HeapSort-Part5.png │ │ │ ├── HeapSort-Part6.png │ │ │ ├── HeapSort-Part7.png │ │ │ ├── InsertionSort-Part1.png │ │ │ ├── InsertionSort-Part2.png │ │ │ ├── InsertionSort-Part3.png │ │ │ ├── InsertionSort-Part4.png │ │ │ ├── InsertionSort-Part5.png │ │ │ ├── InsertionSort-Part6.png │ │ │ ├── InsertionSort-Part7.png │ │ │ ├── InsertionSort-Part8.png │ │ │ ├── MergeSort-Part1.png │ │ │ ├── MergeSort-Part2.png │ │ │ ├── MergeSort-Part3.png │ │ │ ├── MergeSort-Part4.png │ │ │ ├── MergeSort-Part5.png │ │ │ ├── QuickSort-Part1.png │ │ │ ├── QuickSort-Part2.png │ │ │ ├── QuickSort-Part3.png │ │ │ ├── QuickSort-Part4.png │ │ │ ├── QuickSort-Part5.png │ │ │ ├── RadixSort-Part1.png │ │ │ ├── RadixSort-Part2.png │ │ │ ├── RadixSort-Part3.png │ │ │ ├── SelectionSort-Part1.png │ │ │ ├── SelectionSort-Part2.png │ │ │ ├── SelectionSort-Part3.png │ │ │ ├── SelectionSort-Part4.png │ │ │ ├── SelectionSort-Part5.png │ │ │ └── SelectionSort-Part6.png │ │ ├── InsertionSortTests.cs │ │ ├── MergeSortTests.cs │ │ ├── QuickSortTests.cs │ │ ├── RadixSortTests.cs │ │ ├── SelectionSortTests.cs │ │ ├── SortTests.cs │ │ ├── StabilityCheckableVersions │ │ │ ├── BubbleSortTests.cs │ │ │ ├── ElementTests.cs │ │ │ ├── InsertionSortTests.cs │ │ │ ├── MergeSortTests.cs │ │ │ ├── QuickSortTests.cs │ │ │ ├── RadixSortTests.cs │ │ │ ├── SelectionSortTests.cs │ │ │ └── UtilsTests.cs │ │ └── UtilsTests.cs │ └── SubarraySearch │ │ └── SubarraySearchTests.cs ├── AlgorithmsAndDataStructuresTests.csproj ├── AlgorithmsAndDataStructuresTests.xml ├── CSFundamentalsTests.xml └── DataStructures │ ├── BinaryHeaps │ ├── API │ │ ├── BinaryHeapBaseTests.cs │ │ └── MockBinaryHeap.cs │ ├── Images │ │ ├── MaxBinaryHeap-Build.PNG │ │ ├── MaxBinaryHeap-Insert.PNG │ │ ├── MaxBinaryHeap-TryRemoveRoot.PNG │ │ ├── MinBinaryHeap-Build.PNG │ │ ├── MinBinaryHeap-Insert.PNG │ │ ├── MinBinaryHeap-TryRemoveRoot.PNG │ │ ├── MinMaxBinaryHeap-Build-WithDuplicateKeys.PNG │ │ ├── MinMaxBinaryHeap-Build.PNG │ │ ├── MinMaxBinaryHeap-Insert.PNG │ │ └── MinMaxBinaryHeap-TryRemoveRoot.PNG │ ├── MaxBinaryHeapTests.cs │ ├── MinBinaryHeapTests.cs │ └── MinMaxBinaryHeapTests.cs │ ├── LinkedLists │ ├── API │ │ ├── LinkedListBaseTests.cs │ │ ├── MockLinkedList.cs │ │ └── MockLinkedNode.cs │ ├── DoublyLinkedListTests.cs │ ├── DoublyLinkedNodeTests.cs │ ├── DoublyLinkedSortedListTests.cs │ ├── SinglyLinkedListTests.cs │ └── UtilsTests.cs │ ├── StringStructures │ ├── LLPPSTests.cs │ ├── StringSuffixTests.cs │ ├── SuffixArrayTests.cs │ └── SuffixTreeTests.cs │ └── Trees │ ├── Binary │ ├── API │ │ ├── BinarySearchTreeBaseTests.cs │ │ ├── BinaryTreeNodeTests.cs │ │ ├── MockBinarySearchTreeBase.cs │ │ └── MockBinaryTreeNode.cs │ ├── AVLTreeTests.cs │ ├── BinarySearchTreeTests.cs │ ├── Constants.cs │ ├── Images │ │ ├── avl-bst-delete.png │ │ ├── avl-bst-insert.png │ │ ├── avl-bst.png │ │ ├── bst-delete.png │ │ ├── bst-insert.png │ │ ├── bst.png │ │ ├── redblack-bst-delete.png │ │ ├── redblack-bst-insert.png │ │ └── redblack-bst.png │ ├── RedBlackTreeNodeTests.cs │ └── RedBlackTreeTests.cs │ └── Nary │ ├── 2-3-4-BTreeNodeTests.cs │ ├── 2-3-BPlusTreeTests.cs │ ├── 2-3-BTreeNodeTests.cs │ ├── 2-3-BTreeTests.cs │ ├── 3-5-BTreeNodeTests.cs │ ├── BTreeTestsUtils.cs │ └── Images │ ├── 2-3-B-Plus-Tree.png │ ├── 2-3-BPlus-Tree-delete-Part1.png │ ├── 2-3-BPlus-Tree-delete-Part2.png │ ├── 2-3-BPlus-Tree-delete-Part3.png │ ├── 2-3-BPlus-Tree-insert-Part1.PNG │ ├── 2-3-BPlus-Tree-insert-Part2.PNG │ ├── 2-3-BPlus-Tree.png │ ├── 2-3-BTree-Insertion-Part1.png │ ├── 2-3-BTree-Insertion-Part2.png │ ├── 2-3-BTree-delete-Part1.PNG │ ├── 2-3-BTree-delete-Part2.PNG │ └── 2-3-BTree.png ├── docfx_project ├── .vscode │ └── docfx-assistant │ │ └── topic-cache.json ├── api │ └── index.md ├── articles │ ├── AlgorithmsAndDataStructures.md │ ├── CodingGuidelines.md │ └── intro.md ├── docfx.json ├── images │ ├── Graphs │ │ ├── BFS-Iterative-StartA.png │ │ ├── BFS-Iterative-StartE.png │ │ ├── BFS-Recursive-StartA.png │ │ ├── BFS-Recursive-StartE.png │ │ ├── DFS-Iterative-StartA.PNG │ │ ├── DFS-Iterative-StartE.PNG │ │ ├── DFS-Recursive-StartA.PNG │ │ ├── DFS-Recursive-StartE.PNG │ │ ├── Disjkstra.png │ │ └── Graph-BFS-DFS.PNG │ ├── Heaps │ │ ├── MaxBinaryHeap-Build.png │ │ ├── MaxBinaryHeap-Insert.PNG │ │ ├── MaxBinaryHeap-TryRemoveRoot.PNG │ │ ├── MinBinaryHeap-Build.png │ │ ├── MinBinaryHeap-Insert.PNG │ │ ├── MinBinaryHeap-TryRemoveRoot.PNG │ │ ├── MinMaxBinaryHeap-Build-WithDuplicateKeys.PNG │ │ ├── MinMaxBinaryHeap-Build.PNG │ │ ├── MinMaxBinaryHeap-Insert.PNG │ │ └── MinMaxBinaryHeap-TryRemoveRoot.PNG │ ├── Search │ │ ├── BinarySearch-Distinct.png │ │ ├── BinarySearch-Duplicate.png │ │ ├── BinarySearch-Missing.png │ │ ├── ExponentialSearch-Distinct.png │ │ ├── ExponentialSearch-Duplicate.png │ │ ├── ExponentialSearch-Missing.png │ │ ├── FibonacciSearch-Distinct.png │ │ ├── FibonacciSearch-Duplicate.png │ │ ├── FibonacciSearch-Missing.png │ │ ├── HashTableSearch-Distinct.png │ │ ├── HashTableSearch-Duplicate.png │ │ ├── HashTableSearch-Missing.png │ │ ├── InterpolationSearch-Distinct.png │ │ ├── InterpolationSearch-Duplicate.png │ │ ├── InterpolationSearch-Missing.png │ │ ├── JumpSearch-Distinct.png │ │ ├── JumpSearch-Duplicate.png │ │ ├── JumpSearch-Missing.png │ │ ├── LinearSearch-Distinct.png │ │ ├── LinearSearch-Duplicate.png │ │ ├── LinearSearch-Missing.png │ │ ├── TernarySearch-Distinct.png │ │ ├── TernarySearch-Duplicate.png │ │ └── TernarySearch-Missing.png │ ├── Sorts │ │ ├── BubbleSort-Part1.png │ │ ├── BubbleSort-Part2.png │ │ ├── BubbleSort-Part3.png │ │ ├── BubbleSort-Part4.png │ │ ├── HeapSort-Part1.png │ │ ├── HeapSort-Part2.png │ │ ├── HeapSort-Part3.png │ │ ├── HeapSort-Part4.png │ │ ├── HeapSort-Part5.png │ │ ├── HeapSort-Part6.png │ │ ├── HeapSort-Part7.png │ │ ├── HeapSort.png │ │ ├── InsertionSort-Part1.png │ │ ├── InsertionSort-Part2.png │ │ ├── InsertionSort-Part3.png │ │ ├── InsertionSort-Part4.png │ │ ├── InsertionSort-Part5.png │ │ ├── InsertionSort-Part6.png │ │ ├── InsertionSort-Part7.png │ │ ├── InsertionSort-Part8.png │ │ ├── MergeSort-Part1.png │ │ ├── MergeSort-Part2.png │ │ ├── MergeSort-Part3.png │ │ ├── MergeSort-Part4.png │ │ ├── MergeSort-Part5.png │ │ ├── QuickSort-Part1.png │ │ ├── QuickSort-Part2.png │ │ ├── QuickSort-Part3.png │ │ ├── QuickSort-Part4.png │ │ ├── QuickSort-Part5.png │ │ ├── RadixSort-Part1.png │ │ ├── RadixSort-Part2.png │ │ ├── RadixSort-Part3.png │ │ ├── SelectionSort-Part1.png │ │ ├── SelectionSort-Part2.png │ │ ├── SelectionSort-Part3.png │ │ ├── SelectionSort-Part4.png │ │ ├── SelectionSort-Part5.png │ │ └── SelectionSort-Part6.png │ └── Trees │ │ ├── Binary │ │ ├── avl-bst-delete.png │ │ ├── avl-bst-insert.png │ │ ├── avl-bst.png │ │ ├── bst-delete.png │ │ ├── bst-insert.png │ │ ├── bst.png │ │ ├── redblack-bst-delete.png │ │ ├── redblack-bst-insert.png │ │ └── redblack-bst.png │ │ └── Nary │ │ ├── 2-3-B-Plus-Tree.png │ │ ├── 2-3-BPlus-Tree-delete-Part1.png │ │ ├── 2-3-BPlus-Tree-delete-Part2.png │ │ ├── 2-3-BPlus-Tree-delete-Part3.png │ │ ├── 2-3-BPlus-Tree-insert-Part1.PNG │ │ ├── 2-3-BPlus-Tree-insert-Part2.PNG │ │ ├── 2-3-BPlus-Tree.png │ │ ├── 2-3-BTree-Insert-Part1.png │ │ ├── 2-3-BTree-delete-Part1.PNG │ │ ├── 2-3-BTree-delete-Part2.PNG │ │ ├── 2-3-BTree-insert-Part2.png │ │ └── 2-3-BTree.png └── index.md ├── docs ├── _config.yml ├── api │ ├── AlgorithmsAndDataStructures.Algorithms.GraphTraversal.BFS.html │ ├── AlgorithmsAndDataStructures.Algorithms.GraphTraversal.DFS.html │ ├── AlgorithmsAndDataStructures.Algorithms.GraphTraversal.Dijkstra.html │ ├── AlgorithmsAndDataStructures.Algorithms.GraphTraversal.GraphEdge-1.html │ ├── AlgorithmsAndDataStructures.Algorithms.GraphTraversal.GraphNode-1.html │ ├── AlgorithmsAndDataStructures.Algorithms.GraphTraversal.html │ ├── AlgorithmsAndDataStructures.Algorithms.Hashing.RollingHash.html │ ├── AlgorithmsAndDataStructures.Algorithms.Hashing.html │ ├── AlgorithmsAndDataStructures.Algorithms.PatternSearch.BoyerMooreSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.PatternSearch.KMPSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.PatternSearch.NaiveSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.PatternSearch.RabinKarpSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.PatternSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.Search.BinarySearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.Search.ExponentialSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.Search.FibonacciElement.html │ ├── AlgorithmsAndDataStructures.Algorithms.Search.FibonacciSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.Search.HashTableSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.Search.InterpolationSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.Search.JumpSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.Search.LinearSearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.Search.TernarySearch.html │ ├── AlgorithmsAndDataStructures.Algorithms.Search.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.BubbleSort.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.HeapSort.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.InsertionSort.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.MergeSort.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.QuickSort.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.RadixSort.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.SelectionSort.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.StabilityCheckableVersions.Element.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.StabilityCheckableVersions.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.Utils.html │ ├── AlgorithmsAndDataStructures.Algorithms.Sort.html │ ├── AlgorithmsAndDataStructures.Algorithms.SubarraySearch.Naive.html │ ├── AlgorithmsAndDataStructures.Algorithms.SubarraySearch.html │ ├── AlgorithmsAndDataStructures.DataStructures.BinaryHeaps.API.BinaryHeapBase-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.BinaryHeaps.API.IBinaryHeap-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.BinaryHeaps.API.html │ ├── AlgorithmsAndDataStructures.DataStructures.BinaryHeaps.MaxBinaryHeap-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.BinaryHeaps.MinBinaryHeap-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.BinaryHeaps.MinMaxBinaryHeap-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.BinaryHeaps.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.API.LinkedListBase-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.API.LinkedNode-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.API.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.DoublyLinkedList-1.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.DoublyLinkedNode-1.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.DoublyLinkedSortedList-1.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.NotFoundException.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.SinglyLinkedList-1.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.SinglyLinkedNode-1.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.Utils.html │ ├── AlgorithmsAndDataStructures.DataStructures.LinkedLists.html │ ├── AlgorithmsAndDataStructures.DataStructures.StringStructures.LLPPS.html │ ├── AlgorithmsAndDataStructures.DataStructures.StringStructures.StringSuffix.html │ ├── AlgorithmsAndDataStructures.DataStructures.StringStructures.SuffixArray.html │ ├── AlgorithmsAndDataStructures.DataStructures.StringStructures.SuffixTree.html │ ├── AlgorithmsAndDataStructures.DataStructures.StringStructures.SuffixTreeNode.html │ ├── AlgorithmsAndDataStructures.DataStructures.StringStructures.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.API.BinarySearchTreeBase-3.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.API.BinaryTreeNode-3.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.API.IBinaryTreeNode-3.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.API.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.AVLTree-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.AVLTreeNode-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.BinarySearchTreeBase-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.BinarySearchTreeNode-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.RedBlackTree-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.RedBlackTreeNode-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.RedBlackTreeNodeColor.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.TreeNodeRelationException.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Binary.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Nary.API.BTreeBase-3.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Nary.API.BTreeNodeBase-3.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Nary.API.IBTreeNode-3.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Nary.API.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Nary.BPlusTree-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Nary.BPlusTreeNode-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Nary.BTree-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Nary.BTreeNode-2.html │ ├── AlgorithmsAndDataStructures.DataStructures.Trees.Nary.html │ ├── AlgorithmsAndDataStructures.Decoration.AlgorithmAttribute.html │ ├── AlgorithmsAndDataStructures.Decoration.AlgorithmType.html │ ├── AlgorithmsAndDataStructures.Decoration.Case.html │ ├── AlgorithmsAndDataStructures.Decoration.DataStructureAttribute.html │ ├── AlgorithmsAndDataStructures.Decoration.SpaceComplexityAttribute.html │ ├── AlgorithmsAndDataStructures.Decoration.TimeComplexityAttribute.html │ ├── AlgorithmsAndDataStructures.Decoration.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.GraphTraversal.BfsTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.GraphTraversal.DfsTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.GraphTraversal.DijkstraTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.GraphTraversal.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Search.BinarySearchTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Search.ExponentialSearchTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Search.FibonacciSearchTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Search.HashTableSearchTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Search.InterpolationSearchTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Search.JumpSearchTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Search.LinearSearchTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Search.SearchTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Search.TernarySearchTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Search.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.BubbleSortTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.Constants.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.ElementTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.HeapSortTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.InsertionSortTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.MergeSortTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.QuickSortTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.RadixSortTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.SelectionSortTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.SortTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.UtilsTests.html │ ├── AlgorithmsAndDataStructuresTests.Algorithms.Sort.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.BinaryHeaps.API.BinaryHeapBaseTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.BinaryHeaps.API.MockBinaryHeap-2.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.BinaryHeaps.API.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.BinaryHeaps.MaxBinaryHeapTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.BinaryHeaps.MinBinaryHeapTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.BinaryHeaps.MinMaxBinaryHeapTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.BinaryHeaps.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.API.LinkedListBaseTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.API.MockLinkedList-1.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.API.MockLinkedNode-1.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.API.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.DoublyLinkedListTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.DoublyLinkedNodeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.DoublyLinkedSortedListTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.SinglyLinkedListTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.UtilsTests.Person.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.UtilsTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.API.BinarySearchTreeBaseTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.API.BinaryTreeNodeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.API.MockBinarySearchTreeBase-2.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.API.MockBinaryTreeNode-2.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.API.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.AVLTreeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.BinarySearchTreeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.Constants.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.RedBlackTreeNodeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.RedBlackTreeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Nary.BTreeTestsUtils.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Nary._2_3_4_BTreeNodeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Nary._2_3_BPlusTreeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Nary._2_3_BTreeNodeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Nary._2_3_BTreeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Nary._3_5_BTreeNodeTests.html │ ├── AlgorithmsAndDataStructuresTests.DataStructures.Trees.Nary.html │ ├── AlgorithmsAndDataStructuresTests.Hashing.RollingHashTests.html │ ├── AlgorithmsAndDataStructuresTests.Hashing.html │ ├── AlgorithmsAndDataStructuresTests.PatternSearch.BoyerMooreSearchTests.html │ ├── AlgorithmsAndDataStructuresTests.PatternSearch.KMPSearchTests.html │ ├── AlgorithmsAndDataStructuresTests.PatternSearch.NaiveSearchTests.html │ ├── AlgorithmsAndDataStructuresTests.PatternSearch.RabinKarpSearchTests.html │ ├── AlgorithmsAndDataStructuresTests.PatternSearch.html │ ├── AlgorithmsAndDataStructuresTests.StringStructures.LLPPSTests.html │ ├── AlgorithmsAndDataStructuresTests.StringStructures.StringSuffixTests.html │ ├── AlgorithmsAndDataStructuresTests.StringStructures.SuffixArrayTests.html │ ├── AlgorithmsAndDataStructuresTests.StringStructures.SuffixTreeTests.html │ ├── AlgorithmsAndDataStructuresTests.StringStructures.html │ ├── AlgorithmsAndDataStructuresTests.SubarraySearch.SubarraySearchTests.html │ ├── AlgorithmsAndDataStructuresTests.SubarraySearch.html │ ├── CSFundamentals.Algorithms.GraphTraversal.BFS.html │ ├── CSFundamentals.Algorithms.GraphTraversal.DFS.html │ ├── CSFundamentals.Algorithms.GraphTraversal.Dijkstra.html │ ├── CSFundamentals.Algorithms.GraphTraversal.GraphEdge-1.html │ ├── CSFundamentals.Algorithms.GraphTraversal.GraphNode-1.html │ ├── CSFundamentals.Algorithms.GraphTraversal.html │ ├── CSFundamentals.Algorithms.Hashing.RollingHash.html │ ├── CSFundamentals.Algorithms.Hashing.html │ ├── CSFundamentals.Algorithms.PatternSearch.BoyerMooreSearch.html │ ├── CSFundamentals.Algorithms.PatternSearch.KMPSearch.html │ ├── CSFundamentals.Algorithms.PatternSearch.NaiveSearch.html │ ├── CSFundamentals.Algorithms.PatternSearch.RabinKarpSearch.html │ ├── CSFundamentals.Algorithms.PatternSearch.html │ ├── CSFundamentals.Algorithms.Search.BinarySearch.html │ ├── CSFundamentals.Algorithms.Search.ExponentialSearch.html │ ├── CSFundamentals.Algorithms.Search.FibonacciElement.html │ ├── CSFundamentals.Algorithms.Search.FibonacciSearch.html │ ├── CSFundamentals.Algorithms.Search.HashTableSearch.html │ ├── CSFundamentals.Algorithms.Search.InterpolationSearch.html │ ├── CSFundamentals.Algorithms.Search.JumpSearch.html │ ├── CSFundamentals.Algorithms.Search.LinearSearch.html │ ├── CSFundamentals.Algorithms.Search.TernarySearch.html │ ├── CSFundamentals.Algorithms.Search.html │ ├── CSFundamentals.Algorithms.Sort.BubbleSort.html │ ├── CSFundamentals.Algorithms.Sort.HeapSort.html │ ├── CSFundamentals.Algorithms.Sort.InsertionSort.html │ ├── CSFundamentals.Algorithms.Sort.MergeSort.html │ ├── CSFundamentals.Algorithms.Sort.QuickSort.html │ ├── CSFundamentals.Algorithms.Sort.RadixSort.html │ ├── CSFundamentals.Algorithms.Sort.SelectionSort.html │ ├── CSFundamentals.Algorithms.Sort.StabilityCheckableVersions.Element.html │ ├── CSFundamentals.Algorithms.Sort.StabilityCheckableVersions.html │ ├── CSFundamentals.Algorithms.Sort.Utils.html │ ├── CSFundamentals.Algorithms.Sort.html │ ├── CSFundamentals.Algorithms.SubarraySearch.Naive.html │ ├── CSFundamentals.Algorithms.SubarraySearch.html │ ├── CSFundamentals.DataStructures.BinaryHeaps.API.BinaryHeapBase-2.html │ ├── CSFundamentals.DataStructures.BinaryHeaps.API.IBinaryHeap-2.html │ ├── CSFundamentals.DataStructures.BinaryHeaps.API.html │ ├── CSFundamentals.DataStructures.BinaryHeaps.MaxBinaryHeap-2.html │ ├── CSFundamentals.DataStructures.BinaryHeaps.MinBinaryHeap-2.html │ ├── CSFundamentals.DataStructures.BinaryHeaps.MinMaxBinaryHeap-2.html │ ├── CSFundamentals.DataStructures.BinaryHeaps.html │ ├── CSFundamentals.DataStructures.LinkedLists.API.LinkedListBase-2.html │ ├── CSFundamentals.DataStructures.LinkedLists.API.LinkedNode-2.html │ ├── CSFundamentals.DataStructures.LinkedLists.API.html │ ├── CSFundamentals.DataStructures.LinkedLists.DoublyLinkedList-1.html │ ├── CSFundamentals.DataStructures.LinkedLists.DoublyLinkedNode-1.html │ ├── CSFundamentals.DataStructures.LinkedLists.DoublyLinkedSortedList-1.html │ ├── CSFundamentals.DataStructures.LinkedLists.NotFoundException.html │ ├── CSFundamentals.DataStructures.LinkedLists.SinglyLinkedList-1.html │ ├── CSFundamentals.DataStructures.LinkedLists.SinglyLinkedNode-1.html │ ├── CSFundamentals.DataStructures.LinkedLists.Utils.html │ ├── CSFundamentals.DataStructures.LinkedLists.html │ ├── CSFundamentals.DataStructures.StringStructures.LLPPS.html │ ├── CSFundamentals.DataStructures.StringStructures.StringSuffix.html │ ├── CSFundamentals.DataStructures.StringStructures.SuffixArray.html │ ├── CSFundamentals.DataStructures.StringStructures.SuffixTree.html │ ├── CSFundamentals.DataStructures.StringStructures.SuffixTreeNode.html │ ├── CSFundamentals.DataStructures.StringStructures.html │ ├── CSFundamentals.DataStructures.Trees.Binary.API.BinarySearchTreeBase-3.html │ ├── CSFundamentals.DataStructures.Trees.Binary.API.BinaryTreeNode-3.html │ ├── CSFundamentals.DataStructures.Trees.Binary.API.IBinaryTreeNode-3.html │ ├── CSFundamentals.DataStructures.Trees.Binary.API.html │ ├── CSFundamentals.DataStructures.Trees.Binary.AVLTree-2.html │ ├── CSFundamentals.DataStructures.Trees.Binary.AVLTreeNode-2.html │ ├── CSFundamentals.DataStructures.Trees.Binary.BinarySearchTreeBase-2.html │ ├── CSFundamentals.DataStructures.Trees.Binary.BinarySearchTreeNode-2.html │ ├── CSFundamentals.DataStructures.Trees.Binary.RedBlackTree-2.html │ ├── CSFundamentals.DataStructures.Trees.Binary.RedBlackTreeNode-2.html │ ├── CSFundamentals.DataStructures.Trees.Binary.RedBlackTreeNodeColor.html │ ├── CSFundamentals.DataStructures.Trees.Binary.TreeNodeRelationException.html │ ├── CSFundamentals.DataStructures.Trees.Binary.html │ ├── CSFundamentals.DataStructures.Trees.Nary.API.BTreeBase-3.html │ ├── CSFundamentals.DataStructures.Trees.Nary.API.BTreeNodeBase-3.html │ ├── CSFundamentals.DataStructures.Trees.Nary.API.IBTreeNode-3.html │ ├── CSFundamentals.DataStructures.Trees.Nary.API.html │ ├── CSFundamentals.DataStructures.Trees.Nary.BPlusTree-2.html │ ├── CSFundamentals.DataStructures.Trees.Nary.BPlusTreeNode-2.html │ ├── CSFundamentals.DataStructures.Trees.Nary.BTree-2.html │ ├── CSFundamentals.DataStructures.Trees.Nary.BTreeNode-2.html │ ├── CSFundamentals.DataStructures.Trees.Nary.html │ ├── CSFundamentals.Decoration.AlgorithmAttribute.html │ ├── CSFundamentals.Decoration.AlgorithmType.html │ ├── CSFundamentals.Decoration.Case.html │ ├── CSFundamentals.Decoration.DataStructureAttribute.html │ ├── CSFundamentals.Decoration.SpaceComplexityAttribute.html │ ├── CSFundamentals.Decoration.TimeComplexityAttribute.html │ ├── CSFundamentals.Decoration.html │ ├── CSFundamentalsTests.Algorithms.GraphTraversal.BfsTests.html │ ├── CSFundamentalsTests.Algorithms.GraphTraversal.DfsTests.html │ ├── CSFundamentalsTests.Algorithms.GraphTraversal.DijkstraTests.html │ ├── CSFundamentalsTests.Algorithms.GraphTraversal.html │ ├── CSFundamentalsTests.Algorithms.Search.BinarySearchTests.html │ ├── CSFundamentalsTests.Algorithms.Search.ExponentialSearchTests.html │ ├── CSFundamentalsTests.Algorithms.Search.FibonacciSearchTests.html │ ├── CSFundamentalsTests.Algorithms.Search.HashTableSearchTests.html │ ├── CSFundamentalsTests.Algorithms.Search.InterpolationSearchTests.html │ ├── CSFundamentalsTests.Algorithms.Search.JumpSearchTests.html │ ├── CSFundamentalsTests.Algorithms.Search.LinearSearchTests.html │ ├── CSFundamentalsTests.Algorithms.Search.SearchTests.html │ ├── CSFundamentalsTests.Algorithms.Search.TernarySearchTests.html │ ├── CSFundamentalsTests.Algorithms.Search.html │ ├── CSFundamentalsTests.Algorithms.Sort.BubbleSortTests.html │ ├── CSFundamentalsTests.Algorithms.Sort.Constants.html │ ├── CSFundamentalsTests.Algorithms.Sort.ElementTests.html │ ├── CSFundamentalsTests.Algorithms.Sort.HeapSortTests.html │ ├── CSFundamentalsTests.Algorithms.Sort.InsertionSortTests.html │ ├── CSFundamentalsTests.Algorithms.Sort.MergeSortTests.html │ ├── CSFundamentalsTests.Algorithms.Sort.QuickSortTests.html │ ├── CSFundamentalsTests.Algorithms.Sort.RadixSortTests.html │ ├── CSFundamentalsTests.Algorithms.Sort.SelectionSortTests.html │ ├── CSFundamentalsTests.Algorithms.Sort.SortTests.html │ ├── CSFundamentalsTests.Algorithms.Sort.UtilsTests.html │ ├── CSFundamentalsTests.Algorithms.Sort.html │ ├── CSFundamentalsTests.DataStructures.BinaryHeaps.API.BinaryHeapBaseTests.html │ ├── CSFundamentalsTests.DataStructures.BinaryHeaps.API.MockBinaryHeap-2.html │ ├── CSFundamentalsTests.DataStructures.BinaryHeaps.API.html │ ├── CSFundamentalsTests.DataStructures.BinaryHeaps.MaxBinaryHeapTests.html │ ├── CSFundamentalsTests.DataStructures.BinaryHeaps.MinBinaryHeapTests.html │ ├── CSFundamentalsTests.DataStructures.BinaryHeaps.MinMaxBinaryHeapTests.html │ ├── CSFundamentalsTests.DataStructures.BinaryHeaps.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.API.LinkedListBaseTests.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.API.MockLinkedList-1.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.API.MockLinkedNode-1.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.API.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.DoublyLinkedListTests.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.DoublyLinkedNodeTests.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.DoublyLinkedSortedListTests.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.SinglyLinkedListTests.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.UtilsTests.Person.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.UtilsTests.html │ ├── CSFundamentalsTests.DataStructures.LinkedLists.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.API.BinarySearchTreeBaseTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.API.BinaryTreeNodeTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.API.MockBinarySearchTreeBase-2.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.API.MockBinaryTreeNode-2.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.API.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.AVLTreeTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.BinarySearchTreeTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.Constants.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.RedBlackTreeNodeTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.RedBlackTreeTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Binary.html │ ├── CSFundamentalsTests.DataStructures.Trees.Nary.BTreeTestsUtils.html │ ├── CSFundamentalsTests.DataStructures.Trees.Nary._2_3_4_BTreeNodeTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Nary._2_3_BPlusTreeTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Nary._2_3_BTreeNodeTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Nary._2_3_BTreeTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Nary._3_5_BTreeNodeTests.html │ ├── CSFundamentalsTests.DataStructures.Trees.Nary.html │ ├── CSFundamentalsTests.Hashing.RollingHashTests.html │ ├── CSFundamentalsTests.Hashing.html │ ├── CSFundamentalsTests.PatternSearch.BoyerMooreSearchTests.html │ ├── CSFundamentalsTests.PatternSearch.KMPSearchTests.html │ ├── CSFundamentalsTests.PatternSearch.NaiveSearchTests.html │ ├── CSFundamentalsTests.PatternSearch.RabinKarpSearchTests.html │ ├── CSFundamentalsTests.PatternSearch.html │ ├── CSFundamentalsTests.StringStructures.LLPPSTests.html │ ├── CSFundamentalsTests.StringStructures.StringSuffixTests.html │ ├── CSFundamentalsTests.StringStructures.SuffixArrayTests.html │ ├── CSFundamentalsTests.StringStructures.SuffixTreeTests.html │ ├── CSFundamentalsTests.StringStructures.html │ ├── CSFundamentalsTests.SubarraySearch.SubarraySearchTests.html │ ├── CSFundamentalsTests.SubarraySearch.html │ ├── index.html │ └── toc.html ├── articles │ ├── AlgorithmsAndDataStructures.html │ ├── CodingGuidelines.html │ ├── Content.html │ ├── DevResources.html │ ├── home.html │ ├── intro.html │ └── toc.html ├── favicon.ico ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── images │ ├── Graph-BFS-DFS.PNG │ ├── Graphs │ │ ├── BFS-Iterative-StartA.png │ │ ├── BFS-Iterative-StartE.png │ │ ├── BFS-Recursive-StartA.png │ │ ├── BFS-Recursive-StartE.png │ │ ├── DFS-Iterative-StartA.PNG │ │ ├── DFS-Iterative-StartE.PNG │ │ ├── DFS-Recursive-StartA.PNG │ │ ├── DFS-Recursive-StartE.PNG │ │ ├── Disjkstra.png │ │ └── Graph-BFS-DFS.PNG │ ├── Heaps │ │ ├── MaxBinaryHeap-Build.png │ │ ├── MaxBinaryHeap-BuildRecursive.png │ │ ├── MaxBinaryHeap-Insert.PNG │ │ ├── MaxBinaryHeap-TryRemoveRoot.PNG │ │ ├── MinBinaryHeap-Build.png │ │ ├── MinBinaryHeap-Insert.PNG │ │ ├── MinBinaryHeap-TryRemoveRoot.PNG │ │ ├── MinMaxBinaryHeap-Build-WithDuplicateKeys.PNG │ │ ├── MinMaxBinaryHeap-Build.PNG │ │ ├── MinMaxBinaryHeap-Insert.PNG │ │ ├── MinMaxBinaryHeap-TryRemoveRoot.PNG │ │ ├── MinMaxHeap-Build-WithDuplicateKeys.PNG │ │ ├── MinMaxHeap-Build.PNG │ │ ├── MinMaxHeap-Insert.PNG │ │ └── MinMaxHeap-TryRemoveRoot.PNG │ ├── Search │ │ ├── BinarySearch-Distinct.png │ │ ├── BinarySearch-Duplicate.png │ │ ├── BinarySearch-Missing.png │ │ ├── BinarySearch.png │ │ ├── ExponentialSearch-Distinct.png │ │ ├── ExponentialSearch-Duplicate.png │ │ ├── ExponentialSearch-Missing.png │ │ ├── FibonacciSearch-Distinct.png │ │ ├── FibonacciSearch-Duplicate.png │ │ ├── FibonacciSearch-Missing.png │ │ ├── HashTableSearch-Distinct.png │ │ ├── HashTableSearch-Duplicate.png │ │ ├── HashTableSearch-Missing.png │ │ ├── InterpolationSearch-Distinct.png │ │ ├── InterpolationSearch-Duplicate.png │ │ ├── InterpolationSearch-Missing.png │ │ ├── JumpSearch-Distinct.png │ │ ├── JumpSearch-Duplicate.png │ │ ├── JumpSearch-Missing.png │ │ ├── LinearSearch-Distinct.png │ │ ├── LinearSearch-Duplicate.png │ │ ├── LinearSearch-Missing.png │ │ ├── TernarySearch-Distinct.png │ │ ├── TernarySearch-Duplicate.png │ │ ├── TernarySearch-Missing.png │ │ └── TernarySearch.png │ ├── Sorts │ │ ├── BubbleSort-Part1.png │ │ ├── BubbleSort-Part2.png │ │ ├── BubbleSort-Part3.png │ │ ├── BubbleSort-Part4.png │ │ ├── HeapSort-Part1.png │ │ ├── HeapSort-Part2.png │ │ ├── HeapSort-Part3.png │ │ ├── HeapSort-Part4.png │ │ ├── HeapSort-Part5.png │ │ ├── HeapSort-Part6.png │ │ ├── HeapSort-Part7.png │ │ ├── HeapSort.png │ │ ├── InsertionSort-Part1.png │ │ ├── InsertionSort-Part2.png │ │ ├── InsertionSort-Part3.png │ │ ├── InsertionSort-Part4.png │ │ ├── InsertionSort-Part5.png │ │ ├── InsertionSort-Part6.png │ │ ├── InsertionSort-Part7.png │ │ ├── InsertionSort-Part8.png │ │ ├── MergeSort-Part1.png │ │ ├── MergeSort-Part2.png │ │ ├── MergeSort-Part3.png │ │ ├── MergeSort-Part4.png │ │ ├── MergeSort-Part5.png │ │ ├── QuickSort-Part1.png │ │ ├── QuickSort-Part2.png │ │ ├── QuickSort-Part3.png │ │ ├── QuickSort-Part4.png │ │ ├── QuickSort-Part5.png │ │ ├── QuickSort.png │ │ ├── RadixSort-Part1.png │ │ ├── RadixSort-Part2.png │ │ ├── RadixSort-Part3.png │ │ ├── RadixSort.png │ │ ├── SelectionSort-Part1.png │ │ ├── SelectionSort-Part2.png │ │ ├── SelectionSort-Part3.png │ │ ├── SelectionSort-Part4.png │ │ ├── SelectionSort-Part5.png │ │ ├── SelectionSort-Part6.png │ │ └── SelectionSort.png │ └── Trees │ │ ├── Binary │ │ ├── avl-bst-delete-stepBystep.png │ │ ├── avl-bst-delete.png │ │ ├── avl-bst-insert-stepByStep.png │ │ ├── avl-bst-insert.png │ │ ├── avl-bst.png │ │ ├── bst-delete-stepBystep.png │ │ ├── bst-delete.png │ │ ├── bst-insert-stepBystep.png │ │ ├── bst-insert.png │ │ ├── bst.png │ │ ├── redblack-bst-delete-stepBystep.png │ │ ├── redblack-bst-delete.png │ │ ├── redblack-bst-insert-stepBystep.png │ │ ├── redblack-bst-insert.png │ │ └── redblack-bst.png │ │ └── Nary │ │ ├── 2-3-B-Plus-Tree.png │ │ ├── 2-3-BPlus-Tree-delete-Part1.png │ │ ├── 2-3-BPlus-Tree-delete-Part2.png │ │ ├── 2-3-BPlus-Tree-delete-Part3.png │ │ ├── 2-3-BPlus-Tree-delete-stepBystep.png │ │ ├── 2-3-BPlus-Tree-insert-Part1.PNG │ │ ├── 2-3-BPlus-Tree-insert-Part2.PNG │ │ ├── 2-3-BPlus-Tree-insert-stepBystep.png │ │ ├── 2-3-BPlus-Tree.png │ │ ├── 2-3-BTree-Insert-Part1.png │ │ ├── 2-3-BTree-delete-Part1.PNG │ │ ├── 2-3-BTree-delete-Part2.PNG │ │ ├── 2-3-BTree-delete-stepBystep.png │ │ ├── 2-3-BTree-insert-Part1 - Copy.png │ │ ├── 2-3-BTree-insert-Part2.png │ │ ├── 2-3-BTree-insert-stepBystep.png │ │ └── 2-3-BTree.png ├── index.html ├── logo.svg ├── manifest.json ├── search-stopwords.json ├── styles │ ├── docfx.css │ ├── docfx.js │ ├── docfx.vendor.css │ ├── docfx.vendor.js │ ├── lunr.js │ ├── lunr.min.js │ ├── main.css │ ├── main.js │ └── search-worker.js └── toc.html └── test /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | build: 4 | docker: 5 | - image: microsoft/dotnet:2.2-sdk 6 | steps: 7 | - checkout 8 | - run: 9 | name: build 10 | command: dotnet build AlgorithmsAndDataStructures.sln 11 | - run: 12 | name: tests 13 | command: dotnet test Tests/AlgorithmsAndDataStructuresTests.csproj 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Don't track content of these folders 2 | */bin 3 | */obj 4 | */.vs 5 | .vs 6 | 7 | /**/DROP/ 8 | /**/TEMP/ 9 | /**/packages/ 10 | /**/bin/ 11 | /**/obj/ 12 | /**/_site 13 | 14 | /**/*.yml 15 | /**/.manifest 16 | -------------------------------------------------------------------------------- /AlgorithmsAndDataStructures.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.28803.352 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AlgorithmsAndDataStructures", "Source\AlgorithmsAndDataStructures.csproj", "{76A3602A-2BA6-4FB1-BB81-28C2D3518C47}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AlgorithmsAndDataStructuresTests", "Tests\AlgorithmsAndDataStructuresTests.csproj", "{5665D954-94FD-4666-8D92-6058696ACEAE}" 9 | EndProject 10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FBA73934-28C8-4EA5-8320-5C1FBDF6900F}" 11 | ProjectSection(SolutionItems) = preProject 12 | .editorconfig = .editorconfig 13 | EndProjectSection 14 | EndProject 15 | Global 16 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 17 | Debug|Any CPU = Debug|Any CPU 18 | Release|Any CPU = Release|Any CPU 19 | EndGlobalSection 20 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 21 | {76A3602A-2BA6-4FB1-BB81-28C2D3518C47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 22 | {76A3602A-2BA6-4FB1-BB81-28C2D3518C47}.Debug|Any CPU.Build.0 = Debug|Any CPU 23 | {76A3602A-2BA6-4FB1-BB81-28C2D3518C47}.Release|Any CPU.ActiveCfg = Release|Any CPU 24 | {76A3602A-2BA6-4FB1-BB81-28C2D3518C47}.Release|Any CPU.Build.0 = Release|Any CPU 25 | {5665D954-94FD-4666-8D92-6058696ACEAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 26 | {5665D954-94FD-4666-8D92-6058696ACEAE}.Debug|Any CPU.Build.0 = Debug|Any CPU 27 | {5665D954-94FD-4666-8D92-6058696ACEAE}.Release|Any CPU.ActiveCfg = Release|Any CPU 28 | {5665D954-94FD-4666-8D92-6058696ACEAE}.Release|Any CPU.Build.0 = Release|Any CPU 29 | EndGlobalSection 30 | GlobalSection(SolutionProperties) = preSolution 31 | HideSolutionNode = FALSE 32 | EndGlobalSection 33 | GlobalSection(ExtensibilityGlobals) = postSolution 34 | SolutionGuid = {99453350-9D29-41E3-B067-CD00A7808520} 35 | EndGlobalSection 36 | EndGlobal 37 | -------------------------------------------------------------------------------- /AlgorithmsAndDataStructures.sln.licenseheader: -------------------------------------------------------------------------------- 1 | extensions: .cs 2 | #region copyright 3 | /* 4 | * Copyright (c) 2019 (PiJei) 5 | * 6 | * This file is part of AlgorithmsAndDataStructures project. 7 | * 8 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with CSFundamentals. If not, see . 20 | */ 21 | #endregion -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | See [Coding Guidelines](https://pijei.github.io/AlgorithmsAndDataStructures/articles/CodingGuidelines.html) 2 | -------------------------------------------------------------------------------- /GemFile: -------------------------------------------------------------------------------- 1 | gem 'jekyll-seo-tag' 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Algorithms & Data Structures in C# 2 | 3 | To learn more about this repository and its content see: 4 | - [Conceptual documentation](https://pijei.github.io/AlgorithmsAndDataStructures/index.html) 5 | - [API documentation](https://pijei.github.io/AlgorithmsAndDataStructures/api/index.html) 6 | 7 | For a list of implemented algorithms and data structures see: 8 | - [Algorithms and Data Structures](https://pijei.github.io/AlgorithmsAndDataStructures/index.html) 9 | 10 | To contibute to the code see: 11 | - [Coding Guidelines](https://pijei.github.io/AlgorithmsAndDataStructures/articles/CodingGuidelines.html) 12 | - [Kanban board](https://github.com/PiJei/AlgorithmsAndDataStructures/projects/1) 13 | -------------------------------------------------------------------------------- /Source/.gitignore: -------------------------------------------------------------------------------- 1 | ############### 2 | # folder # 3 | ############### 4 | /**/DROP/ 5 | /**/TEMP/ 6 | /**/packages/ 7 | /**/bin/ 8 | /**/obj/ 9 | /**/log.txt 10 | /**/_site/ 11 | -------------------------------------------------------------------------------- /Source/Algorithms/GraphTraversal/GraphEdge.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | 22 | namespace AlgorithmsAndDataStructures.Algorithms.GraphTraversal 23 | { 24 | /// 25 | /// A generic graph edge. For sample use-cases , , . 26 | /// 27 | public class GraphEdge 28 | { 29 | /// GraphNode at the other end of this edge. 30 | public GraphNode Node { get; set; } 31 | 32 | /// Weight of this edge. Used in . 33 | public int Weight { get; set; } 34 | 35 | /// 36 | /// Constructor 37 | /// 38 | /// The node at the end of this edge. 39 | /// Weight of this edge. 40 | public GraphEdge(GraphNode node, int weight) 41 | { 42 | Node = node; 43 | Weight = weight; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Source/Algorithms/PatternSearch/NaiveSearch.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.Decoration; 22 | 23 | namespace AlgorithmsAndDataStructures.Algorithms.PatternSearch 24 | { 25 | /// 26 | /// Implements a naive (i.e. inefficient) algorithm for searching a (pattern) string in another string. 27 | /// 28 | public class NaiveSearch 29 | { 30 | /// 31 | /// Implements a naive, brute force algorithm for finding in . 32 | /// Note: Any optimization over this algorithm, can try to reduce the length of the outer or inner loop. 33 | /// 34 | /// The string in which is searched for. 35 | /// The string that is being searched in (). 36 | /// The first index in starting from which a match for is found. 37 | [Algorithm(AlgorithmType.PatternSearch, "Naive")] 38 | public static int Search(string text, string pattern) 39 | { 40 | for (int i = 0; i < text.Length; i++) 41 | { 42 | int searchStartIndex = i; 43 | bool found = true; 44 | for (int j = 0; j < pattern.Length; j++) 45 | { 46 | if ((searchStartIndex + j) >= text.Length) 47 | { 48 | found = false; 49 | break; 50 | } 51 | if (text[searchStartIndex + j] != pattern[j]) 52 | { 53 | found = false; 54 | break; 55 | } 56 | } 57 | if (found) 58 | { 59 | return i; 60 | } 61 | } 62 | 63 | return -1; 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Source/Algorithms/Search/LinearSearch.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | using System.Collections.Generic; 23 | using AlgorithmsAndDataStructures.Decoration; 24 | 25 | namespace AlgorithmsAndDataStructures.Algorithms.Search 26 | { 27 | /// 28 | /// Implements linear search, time complexity is O(N) 29 | /// 30 | public class LinearSearch 31 | { 32 | /// 33 | /// Searches for a given value in a list. 34 | /// 35 | /// 36 | /// A list of any comparable type. 37 | /// The value the method is searching for. 38 | /// The lowest (left-most) index of the list - inclusive. 39 | /// The highest (right-most) index of the list - inclusive. 40 | /// 41 | [Algorithm(AlgorithmType.Search, "LinearSearch")] 42 | [SpaceComplexity("O(1)", InPlace = true)] 43 | [TimeComplexity(Case.Best, "O(1)")] 44 | [TimeComplexity(Case.Worst, "O(n)")] 45 | [TimeComplexity(Case.Average, "O(n)")] 46 | public static int Search(List list, T key, int startIndex, int endIndex) where T : IComparable 47 | { 48 | for (int i = startIndex; i <= endIndex; i++) 49 | { 50 | if (list[i].CompareTo(key) == 0) 51 | { 52 | return i; 53 | } 54 | } 55 | return -1; 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Source/Algorithms/Sort/BubbleSort.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | using System.Collections.Generic; 23 | using AlgorithmsAndDataStructures.Decoration; 24 | 25 | namespace AlgorithmsAndDataStructures.Algorithms.Sort 26 | { 27 | /// 28 | /// Implements Bubble sort algorithm. 29 | /// 30 | public partial class BubbleSort 31 | { 32 | /// 33 | /// Implements bubble sort iteratively, elements are bubbled down or up the list till they are at their final correct positions. 34 | /// 35 | /// The list of values (of type T, e.g., int) to be sorted. 36 | [Algorithm(AlgorithmType.Sort, "BubbleSort")] 37 | [SpaceComplexity("O(1)", InPlace = true)] 38 | [TimeComplexity(Case.Best, "O(n)", When = "Input list is already sorted.")] 39 | [TimeComplexity(Case.Worst, "O(n²)")] 40 | [TimeComplexity(Case.Average, "O(n²)")] 41 | public static void Sort(List list) where T : IComparable 42 | { 43 | /* Bubble sort iterates many times over a list, and stops iterating when no swap happens any more. */ 44 | while (true) 45 | { 46 | bool swapHappened = false; 47 | for (int i = 0; i < list.Count - 1; i++) 48 | { 49 | if (list[i + 1].CompareTo(list[i]) < 0) 50 | { 51 | Utils.Swap(list, i + 1, i); 52 | swapHappened = true; 53 | } 54 | } 55 | if (!swapHappened) /* If no swap happened in this pass, then the list is sorted. Break out of the loop. */ 56 | { 57 | break; 58 | } 59 | } 60 | } 61 | 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Source/Algorithms/Sort/SelectionSort.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | using System.Collections.Generic; 23 | using AlgorithmsAndDataStructures.Decoration; 24 | 25 | namespace AlgorithmsAndDataStructures.Algorithms.Sort 26 | { 27 | /// 28 | /// Implements Selection sort algorithm. 29 | /// 30 | public partial class SelectionSort 31 | { 32 | /// 33 | /// Implements selection sort, which is in-situ and unstable, and at each step, the list would look as one sorted part, and one unsorted part. 34 | /// 35 | /// The list of values (of type T, e.g., int) to be sorted. 36 | [Algorithm(AlgorithmType.Sort, "SelectionSort")] 37 | [SpaceComplexity("O(1)", InPlace = true)] 38 | [TimeComplexity(Case.Best, "O(n²)")] 39 | [TimeComplexity(Case.Worst, "O(n²)")] 40 | [TimeComplexity(Case.Average, "O(n²)")] 41 | public static void Sort(List list) where T : IComparable 42 | { 43 | /*Notice that the loop does not have to repeat over the last element of the list, as by then the last element is already the largest element in the list.*/ 44 | for (int i = 0; i < list.Count - 1; i++) /* Iteration i, determines the i-th smallest/min value. */ 45 | { 46 | int minIndex = i; 47 | for (int j = i+1; j < list.Count; j++) /* This loop finds an element in the unsorted part of the list that is smaller than the current value at index i. */ 48 | { 49 | if (list[j].CompareTo(list[minIndex]) < 0) 50 | { 51 | minIndex = j; 52 | } 53 | } 54 | Utils.Swap(list, i, minIndex); /* Even though if minIndex has not changed, the swap happens. Can be made efficient by adding an if check. */ 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Source/Algorithms/Sort/StabilityCheckableVersions/BubbleSort.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System.Collections.Generic; 22 | using AlgorithmsAndDataStructures.Algorithms.Sort.StabilityCheckableVersions; 23 | 24 | namespace AlgorithmsAndDataStructures.Algorithms.Sort 25 | { 26 | public partial class BubbleSort 27 | { 28 | /// 29 | /// Implements bubble sort iteratively, elements are bubbled down or up the list till they are at their final correct positions. 30 | /// 31 | /// 32 | public static void Sort_Iterative(List list) 33 | { 34 | /* Bubble sort iterates many times over a list, and stops iterating when no swap happens any more. */ 35 | while (true) 36 | { 37 | bool swapHappened = false; 38 | for (int i = 0; i < list.Count - 1; i++) 39 | { 40 | if (list[i + 1].Value < list[i].Value) 41 | { 42 | Utils.Swap(list, i + 1, i); 43 | swapHappened = true; 44 | } 45 | list[i].Move(i); 46 | } 47 | if (!swapHappened) /* If no swap happened in this pass, then the list is sorted. break out of the loop. */ 48 | { 49 | break; 50 | } 51 | } 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Source/Algorithms/Sort/StabilityCheckableVersions/InsertionSort.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System.Collections.Generic; 22 | using AlgorithmsAndDataStructures.Algorithms.Sort.StabilityCheckableVersions; 23 | 24 | namespace AlgorithmsAndDataStructures.Algorithms.Sort 25 | { 26 | public partial class InsertionSort 27 | { 28 | /// 29 | /// Implements an iterative version of Insertion sort. 30 | /// 31 | /// 32 | public static void Sort_Iterative_V2(List list) 33 | { 34 | // In this version, we will overwrite the list location for element (i) by shifting each element to the right if bigger than (i) till finding its correct position 35 | for (int i = 1; i < list.Count; i++) 36 | { 37 | Element listValueAtIndexI = list[i]; 38 | int correctIndex = i; 39 | 40 | for (int j = i - 1; j >= 0 && list[j].Value > listValueAtIndexI.Value; j--) 41 | { 42 | list[j].Move(j + 1); 43 | list[j + 1] = list[j]; 44 | 45 | correctIndex = j; 46 | } 47 | 48 | listValueAtIndexI.Move(correctIndex); 49 | list[correctIndex] = listValueAtIndexI; 50 | } 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Source/Algorithms/Sort/StabilityCheckableVersions/Readme.txt: -------------------------------------------------------------------------------- 1 | These versions of sort algorithms are for checking their stability. 2 | This means to check whether the sort algorithms preserve the original ordering of the duplicate elements in the original list after sorting them. 3 | To keep the main algorithms simple, these versions have their own folder and namespace. Otherwise the essence and logics of the algorithms is the same with the original versions. 4 | The only extra operation within the sort algorithms is updating the new versions. 5 | 6 | Stable sort methods: 7 | - MergeSort 8 | - RadixSort 9 | - InsertionSort 10 | - BubbleSort 11 | 12 | 13 | UnStable sort methods: 14 | - QuickSort, 15 | - SelectionSort 16 | - HeapSort 17 | 18 | -------------------------------------------------------------------------------- /Source/Algorithms/Sort/StabilityCheckableVersions/SelectionSort.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System.Collections.Generic; 22 | using AlgorithmsAndDataStructures.Algorithms.Sort.StabilityCheckableVersions; 23 | 24 | namespace AlgorithmsAndDataStructures.Algorithms.Sort 25 | { 26 | public partial class SelectionSort 27 | { 28 | /// 29 | /// Implements Selection sort. 30 | /// 31 | /// The list of values (of type T, e.g., int) to be sorted. 32 | public static void Sort_Iteratively(List list) 33 | { 34 | /*Notice that the loop does not have to repeat over the last element of the list, as by then the last element is already the largest element in the list.*/ 35 | for (int i = 0; i < list.Count - 1; i++) /* Iteration i, determines the i-th smallest/min value. */ 36 | { 37 | int minIndex = i; 38 | for (int j = i; j < list.Count; j++) /* This loop finds an element in the unsorted part of the list that is smaller than the current value at index i. */ 39 | { 40 | if (list[j].Value < list[minIndex].Value) 41 | { 42 | minIndex = j; 43 | } 44 | } 45 | Utils.Swap(list, i, minIndex); /* Even though if minIndex has not changed, the swap happens. Can be made efficient by adding an if check. */ 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Source/AlgorithmsAndDataStructures.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.0 5 | 6 | 7 | 8 | AlgorithmsAndDataStructures.xml 9 | 10 | 11 | $(MSBuildProjectDirectory)\DocFx\log.txt 12 | Warning 13 | $(MSBuildProjectDirectory)\DocFx\docfx.json 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Source/DataStructures/LinkedLists/API/LinkedNode.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | 23 | namespace AlgorithmsAndDataStructures.DataStructures.LinkedLists.API 24 | { 25 | /// 26 | /// Implements a node in a linked list. 27 | /// 28 | /// Type of the nodes in the linked list. 29 | /// Type of the values stored in the linked list. 30 | [Serializable] 31 | public class LinkedNode where TNode : LinkedNode where TValue : IComparable 32 | { 33 | /// Is the value stored in the node. 34 | public TValue Value { get; set; } 35 | 36 | /// Is a reference to the next immediate node in the list. 37 | public TNode Next { get; set; } 38 | 39 | /// 40 | /// Constructor 41 | /// 42 | /// The value to be stored in the node. 43 | public LinkedNode(TValue value) 44 | { 45 | Value = value; 46 | } 47 | 48 | /// 49 | /// This constructor is for Serializability. 50 | /// 51 | public LinkedNode() 52 | { 53 | } 54 | 55 | /// 56 | /// Checks whether the current node is tail. A node is tail if it has no next node. 57 | /// 58 | /// True in case the node is tail, and false otherwise. 59 | public bool IsTail() 60 | { 61 | if (Next == null) 62 | { 63 | return true; 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Source/DataStructures/LinkedLists/DoublyLinkedNode.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | using AlgorithmsAndDataStructures.DataStructures.LinkedLists.API; 23 | 24 | namespace AlgorithmsAndDataStructures.DataStructures.LinkedLists 25 | { 26 | /// 27 | /// Implements a node in a DoublyLinkedList. 28 | /// 29 | /// The type of the values stored in a node. 30 | [Serializable] 31 | public class DoublyLinkedNode : LinkedNode, TValue> where TValue : IComparable 32 | { 33 | /// 34 | /// Is a reference to the node before this one in the list. 35 | /// 36 | public DoublyLinkedNode Previous = null; 37 | 38 | /// 39 | /// Constructor 40 | /// 41 | /// The value to be stored in the node. 42 | public DoublyLinkedNode(TValue value) : base(value) 43 | { 44 | } 45 | 46 | /// 47 | /// Checks whether the current node is head, a node is head if it has no previous node. 48 | /// 49 | /// True in case the node is head, and false otherwise. 50 | public bool IsHead() 51 | { 52 | if (Previous == null) 53 | { 54 | return true; 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Source/DataStructures/LinkedLists/NotFoundException.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | 23 | namespace AlgorithmsAndDataStructures.DataStructures.LinkedLists 24 | { 25 | /// 26 | /// Defines a customized exception for cases where the value is not found in a search. 27 | /// 28 | public class NotFoundException : Exception 29 | { 30 | /// 31 | /// Constructor 32 | /// 33 | /// The text message to display with exception. 34 | public NotFoundException(string message) : base(message) 35 | { 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Source/DataStructures/LinkedLists/SinglyLinkedNode.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | using AlgorithmsAndDataStructures.DataStructures.LinkedLists.API; 23 | 24 | namespace AlgorithmsAndDataStructures.DataStructures.LinkedLists 25 | { 26 | /// 27 | /// Implements a node in a singly linked list. 28 | /// 29 | /// 30 | [Serializable] 31 | public class SinglyLinkedNode : LinkedNode, TValue> where TValue : IComparable 32 | { 33 | /// 34 | /// Constructor. 35 | /// 36 | /// The value to be stored in the list. 37 | public SinglyLinkedNode(TValue value) : base(value) 38 | { 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Source/DataStructures/LinkedLists/Utils.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using Newtonsoft.Json; 22 | 23 | namespace AlgorithmsAndDataStructures.DataStructures.LinkedLists 24 | { 25 | /// 26 | /// A collection of helper methods used by linked lists. 27 | /// 28 | public class Utils 29 | { 30 | /// 31 | /// Deeply copies the given object by serializing and deserializing it. 32 | /// 33 | /// Type of the object to be copied. 34 | /// The object to be copied. 35 | /// A deep copy of the object. 36 | public static T DeepCopy(T obj) 37 | { 38 | string serializedData = string.Empty; 39 | string serializedObject = JsonConvert.SerializeObject(obj, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); 40 | return JsonConvert.DeserializeObject(serializedObject); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Source/DataStructures/StringStructures/SuffoxTreeNode.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System.Collections.Generic; 22 | 23 | namespace AlgorithmsAndDataStructures.DataStructures.StringStructures 24 | { 25 | // Contract: All the nodes except the root node contain a value for Suffix String. That value is the edge value from the parent of the node to this node. 26 | // Contract: Intermediate nodes' startIndex is set to -1 27 | /// 28 | /// Implements a suffix tree node. 29 | /// 30 | public class SuffixTreeNode 31 | { 32 | /// 33 | /// Is the substring - Also considered an edge. 34 | /// 35 | public string StringValue { get; set; } = string.Empty; 36 | 37 | /// 38 | /// Is the startIndex of the suffix 39 | /// 40 | public int StartIndex { get; set; } = -1; 41 | 42 | /// 43 | /// True if the suffix is a leaf node. 44 | /// 45 | public bool IsLeaf { get; set; } = false; 46 | 47 | /// 48 | /// True if the suffix is a root node. 49 | /// If Root, then suffix string is empty. 50 | /// 51 | public bool IsRoot { get; set; } = false; 52 | 53 | /// 54 | /// True if the node is an intermediate node. 55 | /// Intermediate nodes' startIndex is set to -1 56 | /// 57 | public bool IsIntermediate { get; set; } = false; 58 | 59 | /// 60 | /// Is the list if the suffix Nodes that can be reached from the current node. 61 | /// 62 | public List Children { get; set; } = new List(); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /Source/DataStructures/Trees/Binary/AVLTreeNode.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | using AlgorithmsAndDataStructures.DataStructures.Trees.Binary.API; 23 | 24 | namespace AlgorithmsAndDataStructures.DataStructures.Trees.Binary 25 | { 26 | /// 27 | /// Implements an AVL tree node. 28 | /// 29 | /// Type of the key stored in the node. 30 | /// Type of the value stored in the node. 31 | public class AVLTreeNode : 32 | BinaryTreeNode, TKey, TValue> 33 | where TKey : IComparable 34 | { 35 | /// A reference to the left child of the current node. 36 | public override AVLTreeNode LeftChild { get; set; } 37 | 38 | /// A reference to the right child of the current node. 39 | public override AVLTreeNode RightChild { get; set; } 40 | 41 | /// A reference to the parent of the current node. 42 | public override AVLTreeNode Parent { get; set; } 43 | 44 | /// 45 | /// Parameter-less constructor. 46 | /// 47 | public AVLTreeNode() 48 | { 49 | } 50 | 51 | /// 52 | /// Constructor. 53 | /// 54 | /// The key to be stored in the tree. 55 | /// The value to be stored in the tree. 56 | public AVLTreeNode(TKey key, TValue value) : base(key, value) 57 | { 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Source/DataStructures/Trees/Binary/BinarySearchTreeNode.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | using AlgorithmsAndDataStructures.DataStructures.Trees.Binary.API; 23 | 24 | namespace AlgorithmsAndDataStructures.DataStructures.Trees.Binary 25 | { 26 | /// 27 | /// Implements a binary search tree node. 28 | /// 29 | /// Type of the key stored in the tree. 30 | /// Type of the value stored in the tree. 31 | public class BinarySearchTreeNode : BinaryTreeNode, TKey, TValue> where TKey : IComparable 32 | { 33 | /// 34 | /// Parameter-less constructor. 35 | /// 36 | public BinarySearchTreeNode() 37 | { 38 | } 39 | 40 | /// 41 | /// Constructor. 42 | /// 43 | /// Type of the key stored in the tree. 44 | /// Type of the value stored in the tree. 45 | public BinarySearchTreeNode(TKey key, TValue value) : base(key, value) 46 | { 47 | } 48 | 49 | /// 50 | /// Is a reference to the left child of the current node. 51 | /// 52 | public override BinarySearchTreeNode LeftChild { get; set; } 53 | 54 | /// 55 | /// Is a reference to the right child of the current node. 56 | /// 57 | public override BinarySearchTreeNode RightChild { get; set; } 58 | 59 | /// 60 | /// Is a reference to the parent of the current node. 61 | /// 62 | public override BinarySearchTreeNode Parent { get; set; } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /Source/DataStructures/Trees/Binary/Readme.txt: -------------------------------------------------------------------------------- 1 | Contains implementations for variants of binary trees, these are trees where nodes can have 2 children at most. -------------------------------------------------------------------------------- /Source/DataStructures/Trees/Binary/TreeNodeRelationException.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | 23 | namespace AlgorithmsAndDataStructures.DataStructures.Trees.Binary 24 | { 25 | /// 26 | /// A customized exception for relation between tree nodes. 27 | /// 28 | public class TreeNodeRelationException : Exception 29 | { 30 | /// 31 | /// Constructor. 32 | /// 33 | /// A string clarifying exception's context. 34 | public TreeNodeRelationException(string message) : base(message) 35 | { 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Source/DataStructures/Trees/Nary/Readme.txt: -------------------------------------------------------------------------------- 1 | Contains implementations for variants of nary trees, these are trees where nodes can have n number of children. -------------------------------------------------------------------------------- /Source/Decoration/DataStructureAttribute.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | 23 | namespace AlgorithmsAndDataStructures.Decoration 24 | { 25 | /// 26 | /// Implements an attribute for decorating data structures. 27 | /// 28 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)] 29 | public class DataStructureAttribute : Attribute 30 | { 31 | /// 32 | /// Is the name of data structure. 33 | /// 34 | public string Name { get; private set; } 35 | 36 | /// 37 | /// Constructor. 38 | /// 39 | /// Name of the data structure. 40 | public DataStructureAttribute(string name) 41 | { 42 | Name = name; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Source/Decoration/SpaceComplexityAttribute.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | 22 | using System; 23 | 24 | namespace AlgorithmsAndDataStructures.Decoration 25 | { 26 | /// 27 | /// Implements an attribute for decorating space complexity of algorithms. 28 | /// 29 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)] 30 | public class SpaceComplexityAttribute : Attribute 31 | { 32 | /// 33 | /// The complexity of space / memory used in algorithm implementation. 34 | /// 35 | public string Complexity { get; private set; } 36 | 37 | /// 38 | /// If set to true means the algorithm is in place and thus does not use any auxiliary space. 39 | /// 40 | public bool InPlace { get; set; } 41 | 42 | /// 43 | /// Constructor. 44 | /// 45 | /// Space complexity. 46 | /// Specifies whether the algorithm is in place or not. 47 | public SpaceComplexityAttribute(string complexity, bool inPlace = false) 48 | { 49 | Complexity = complexity; 50 | InPlace = inPlace; 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Tests/.gitignore: -------------------------------------------------------------------------------- 1 | ############### 2 | # folder # 3 | ############### 4 | /**/DROP/ 5 | /**/TEMP/ 6 | /**/packages/ 7 | /**/bin/ 8 | /**/obj/ 9 | /**/log.txt 10 | /**/_site 11 | -------------------------------------------------------------------------------- /Tests/Algorithms/GraphTraversal/Images/BFS-Iterative-StartA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/GraphTraversal/Images/BFS-Iterative-StartA.png -------------------------------------------------------------------------------- /Tests/Algorithms/GraphTraversal/Images/BFS-Iterative-StartE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/GraphTraversal/Images/BFS-Iterative-StartE.png -------------------------------------------------------------------------------- /Tests/Algorithms/GraphTraversal/Images/BFS-Recursive-StartA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/GraphTraversal/Images/BFS-Recursive-StartA.png -------------------------------------------------------------------------------- /Tests/Algorithms/GraphTraversal/Images/BFS-Recursive-StartE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/GraphTraversal/Images/BFS-Recursive-StartE.png -------------------------------------------------------------------------------- /Tests/Algorithms/GraphTraversal/Images/DFS-Iterative-StartA.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/GraphTraversal/Images/DFS-Iterative-StartA.PNG -------------------------------------------------------------------------------- /Tests/Algorithms/GraphTraversal/Images/DFS-Iterative-StartE.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/GraphTraversal/Images/DFS-Iterative-StartE.PNG -------------------------------------------------------------------------------- /Tests/Algorithms/GraphTraversal/Images/DFS-Recursive-StartA.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/GraphTraversal/Images/DFS-Recursive-StartA.PNG -------------------------------------------------------------------------------- /Tests/Algorithms/GraphTraversal/Images/DFS-Recursive-StartE.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/GraphTraversal/Images/DFS-Recursive-StartE.PNG -------------------------------------------------------------------------------- /Tests/Algorithms/GraphTraversal/Images/Disjkstra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/GraphTraversal/Images/Disjkstra.png -------------------------------------------------------------------------------- /Tests/Algorithms/GraphTraversal/Images/Graph-BFS-DFS.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/GraphTraversal/Images/Graph-BFS-DFS.PNG -------------------------------------------------------------------------------- /Tests/Algorithms/Hashing/RollingHashTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.Algorithms.Hashing; 22 | using Microsoft.VisualStudio.TestTools.UnitTesting; 23 | 24 | namespace AlgorithmsAndDataStructuresTests.Hashing 25 | { 26 | /// 27 | /// Tests methods in class. 28 | /// 29 | [TestClass] 30 | public class RollingHashTests 31 | { 32 | private const int NumCharactersInAlphabet = 256; 33 | private const int Prime = 101; 34 | 35 | /// 36 | /// Tests the correctness of Hash method. 37 | /// 38 | [TestMethod] 39 | public void Hash() 40 | { 41 | string s1 = "abc"; 42 | Assert.AreEqual(90, RollingHash.GetHash(s1, Prime, NumCharactersInAlphabet)); 43 | 44 | string s2 = "bcd"; 45 | Assert.AreEqual(31, RollingHash.GetHash(s2, Prime, NumCharactersInAlphabet)); 46 | 47 | /*Note that: string s = "abcd"; // Hash(bcd) = Hash(abc) - hash (a) + hash(d) */ 48 | 49 | int hashConstant = RollingHash.ComputeHashConstantForRollingHash(3, Prime, NumCharactersInAlphabet); 50 | 51 | // Assuming we are rolling the hash window over string s above. 52 | Assert.AreEqual(31, RollingHash.GenerateRollingHash(90, 'a', 'd', 3, hashConstant, Prime, NumCharactersInAlphabet)); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Tests/Algorithms/PatternSearch/KMPSearchTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System.Collections.Generic; 22 | using System.Linq; 23 | using AlgorithmsAndDataStructures.Algorithms.PatternSearch; 24 | using Microsoft.VisualStudio.TestTools.UnitTesting; 25 | 26 | namespace AlgorithmsAndDataStructuresTests.PatternSearch 27 | { 28 | /// 29 | /// Tests methods in class. 30 | /// 31 | [TestClass] 32 | public class KMPSearchTests 33 | { 34 | /// 35 | /// Tests the correctness of pattern search algorithm. 36 | /// 37 | [TestMethod] 38 | public void Search() 39 | { 40 | Assert.IsTrue(KMPSearch.Search("abd", "abdfgh").SequenceEqual(new List { })); /* Testing the case where substring is longer than string. */ 41 | Assert.AreEqual(1, KMPSearch.Search("abcd", "bc")[0]); 42 | Assert.AreEqual(2, KMPSearch.Search("abcd", "cd")[0]); 43 | Assert.AreEqual(12, KMPSearch.Search("aaaaaakcdkaaaabcd", "aab")[0]); 44 | Assert.IsTrue(KMPSearch.Search("abcaab", "a").SequenceEqual(new List { 0, 3, 4 })); 45 | Assert.IsTrue(KMPSearch.Search("abcaab", "abc").SequenceEqual(new List { 0 })); 46 | Assert.AreEqual(0, KMPSearch.Search("aaabbbdaacbb", "kjh").Count); 47 | } 48 | } 49 | } 50 | 51 | -------------------------------------------------------------------------------- /Tests/Algorithms/PatternSearch/NaiveSearchTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System.Collections.Generic; 22 | using AlgorithmsAndDataStructures.Algorithms.PatternSearch; 23 | using Microsoft.VisualStudio.TestTools.UnitTesting; 24 | 25 | namespace AlgorithmsAndDataStructuresTests.PatternSearch 26 | { 27 | /// 28 | /// Tests methods in class. 29 | /// 30 | [TestClass] 31 | public class NaiveSearchTests 32 | { 33 | /// 34 | /// Tests the correctness of pattern search algorithm. 35 | /// 36 | [TestMethod] 37 | public void Search() 38 | { 39 | Assert.AreEqual(-1, NaiveSearch.Search("abd", "abdfgh")); /* Testing the case where substring is longer than string. */ 40 | Assert.AreEqual(-1, NaiveSearch.Search(string.Empty, string.Empty)); 41 | Assert.AreEqual(0, NaiveSearch.Search("a", string.Empty)); 42 | Assert.IsTrue(new List { 0, 3, 4 }.Contains(NaiveSearch.Search("abcaab", "a"))); 43 | Assert.IsTrue(new List { 0 }.Contains(NaiveSearch.Search("abcaab", "abc"))); 44 | Assert.AreEqual(-1, NaiveSearch.Search("aaabbbdaacbb", "kjh")); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Tests/Algorithms/PatternSearch/RabinKarpSearchTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System.Collections.Generic; 22 | using AlgorithmsAndDataStructures.Algorithms.PatternSearch; 23 | using Microsoft.VisualStudio.TestTools.UnitTesting; 24 | 25 | namespace AlgorithmsAndDataStructuresTests.PatternSearch 26 | { 27 | /// 28 | /// Tests methods in class. 29 | /// 30 | [TestClass] 31 | public class RabinKarpSearchTests 32 | { 33 | /// 34 | /// Tests the correctness of pattern search algorithm. 35 | /// 36 | [TestMethod] 37 | public void Search() 38 | { 39 | Assert.AreEqual(-1, RabinKarpSearch.Search("abd", "abdfgh")); /* Testing the case where substring is longer than string. */ 40 | Assert.AreEqual(1, RabinKarpSearch.Search("abcd", "bc")); 41 | Assert.AreEqual(2, RabinKarpSearch.Search("abcd", "cd")); 42 | Assert.AreEqual(12, RabinKarpSearch.Search("aaaaaakcdkaaaabcd", "aab")); 43 | Assert.IsTrue(new List { 0, 3, 4 }.Contains(RabinKarpSearch.Search("abcaab", "a"))); 44 | Assert.IsTrue(new List { 0 }.Contains(RabinKarpSearch.Search("abcaab", "abc"))); 45 | Assert.AreEqual(-1, RabinKarpSearch.Search("aaabbbdaacbb", "kjh")); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/BinarySearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/BinarySearch-Distinct.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/BinarySearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/BinarySearch-Duplicate.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/BinarySearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/BinarySearch-Missing.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/ExponentialSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/ExponentialSearch-Distinct.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/ExponentialSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/ExponentialSearch-Duplicate.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/ExponentialSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/ExponentialSearch-Missing.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/FibonacciSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/FibonacciSearch-Distinct.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/FibonacciSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/FibonacciSearch-Duplicate.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/FibonacciSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/FibonacciSearch-Missing.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/HashTableSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/HashTableSearch-Distinct.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/HashTableSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/HashTableSearch-Duplicate.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/HashTableSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/HashTableSearch-Missing.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/InterpolationSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/InterpolationSearch-Distinct.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/InterpolationSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/InterpolationSearch-Duplicate.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/InterpolationSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/InterpolationSearch-Missing.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/JumpSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/JumpSearch-Distinct.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/JumpSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/JumpSearch-Duplicate.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/JumpSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/JumpSearch-Missing.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/LinearSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/LinearSearch-Distinct.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/LinearSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/LinearSearch-Duplicate.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/LinearSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/LinearSearch-Missing.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/TernarySearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/TernarySearch-Distinct.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/TernarySearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/TernarySearch-Duplicate.png -------------------------------------------------------------------------------- /Tests/Algorithms/Search/Images/TernarySearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Search/Images/TernarySearch-Missing.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/BubbleSortTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.Algorithms.Sort; 22 | using Microsoft.VisualStudio.TestTools.UnitTesting; 23 | 24 | namespace AlgorithmsAndDataStructuresTests.Algorithms.Sort 25 | { 26 | /// 27 | /// Tests methods in class. 28 | /// To visualize how the array evolves while executing bubble sort on see: 29 | /// , 30 | /// , 31 | /// , 32 | /// . . 33 | /// 34 | [TestClass] 35 | public partial class BubbleSortTests 36 | { 37 | /// 38 | /// Tests the correctness of bubble sort iterative version. 39 | /// 40 | [TestMethod] 41 | public void Sort_WithDifferentInputs() 42 | { 43 | SortTests.TestSortMethodWithDifferentInputs(BubbleSort.Sort); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/BubbleSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/BubbleSort-Part1.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/BubbleSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/BubbleSort-Part2.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/BubbleSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/BubbleSort-Part3.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/BubbleSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/BubbleSort-Part4.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/HeapSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/HeapSort-Part1.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/HeapSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/HeapSort-Part2.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/HeapSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/HeapSort-Part3.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/HeapSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/HeapSort-Part4.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/HeapSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/HeapSort-Part5.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/HeapSort-Part6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/HeapSort-Part6.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/HeapSort-Part7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/HeapSort-Part7.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/InsertionSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/InsertionSort-Part1.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/InsertionSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/InsertionSort-Part2.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/InsertionSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/InsertionSort-Part3.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/InsertionSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/InsertionSort-Part4.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/InsertionSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/InsertionSort-Part5.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/InsertionSort-Part6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/InsertionSort-Part6.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/InsertionSort-Part7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/InsertionSort-Part7.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/InsertionSort-Part8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/InsertionSort-Part8.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/MergeSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/MergeSort-Part1.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/MergeSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/MergeSort-Part2.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/MergeSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/MergeSort-Part3.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/MergeSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/MergeSort-Part4.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/MergeSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/MergeSort-Part5.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/QuickSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/QuickSort-Part1.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/QuickSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/QuickSort-Part2.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/QuickSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/QuickSort-Part3.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/QuickSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/QuickSort-Part4.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/QuickSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/QuickSort-Part5.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/RadixSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/RadixSort-Part1.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/RadixSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/RadixSort-Part2.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/RadixSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/RadixSort-Part3.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/SelectionSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/SelectionSort-Part1.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/SelectionSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/SelectionSort-Part2.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/SelectionSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/SelectionSort-Part3.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/SelectionSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/SelectionSort-Part4.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/SelectionSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/SelectionSort-Part5.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/Images/SelectionSort-Part6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/Algorithms/Sort/Images/SelectionSort-Part6.png -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/RadixSortTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.Algorithms.Sort; 22 | using Microsoft.VisualStudio.TestTools.UnitTesting; 23 | 24 | namespace AlgorithmsAndDataStructuresTests.Algorithms.Sort 25 | { 26 | /// 27 | /// Tests methods in class. 28 | /// 29 | [TestClass] 30 | public partial class RadixSortTests 31 | { 32 | /// 33 | /// Tests the correctness of Radix sort algorithm. 34 | /// To visualize how the array evolves while executing Radix sort on see: 35 | /// , 36 | /// 37 | /// . 38 | /// 39 | [TestMethod] 40 | public void Sort_WithDifferentInputs() 41 | { 42 | SortTests.TestSortMethodWithDifferentInputs(RadixSort.Sort); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/SelectionSortTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.Algorithms.Sort; 22 | using Microsoft.VisualStudio.TestTools.UnitTesting; 23 | 24 | namespace AlgorithmsAndDataStructuresTests.Algorithms.Sort 25 | { 26 | /// 27 | /// Tests methods in class. 28 | /// 29 | [TestClass] 30 | public partial class SelectionSortTests 31 | { 32 | /// 33 | /// Tests the correctness of Selection sort algorithm. 34 | /// To visualize how the array evolves while executing selection sort on see: 35 | /// , 36 | /// , 37 | /// , 38 | /// , 39 | /// , 40 | /// . 41 | /// 42 | [TestMethod] 43 | public void Sort_WithDifferentInputs() 44 | { 45 | SortTests.TestSortMethodWithDifferentInputs(SelectionSort.Sort); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/SortTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | using System.Collections.Generic; 23 | using Microsoft.VisualStudio.TestTools.UnitTesting; 24 | 25 | namespace AlgorithmsAndDataStructuresTests.Algorithms.Sort 26 | { 27 | /// 28 | /// Implements methods for testing sort algorithms over arrays with different properties. 29 | /// 30 | [TestClass] 31 | public class SortTests 32 | { 33 | /// 34 | /// Tests the correctness of . 35 | /// 36 | /// The sort method that is being tested. 37 | public static void TestSortMethodWithDifferentInputs(Action> sortMethod) 38 | { 39 | var values = new List(Constants.ArrayWithDistinctValues); 40 | sortMethod(values); 41 | Assert.IsTrue(UtilsTests.IsSortedAscendingly(values)); 42 | 43 | values = new List(Constants.ArrayWithDuplicateValues); 44 | sortMethod(values); 45 | Assert.IsTrue(UtilsTests.IsSortedAscendingly(values)); 46 | 47 | values = new List(Constants.ArrayWithSortedDistinctValues); 48 | sortMethod(values); 49 | Assert.IsTrue(UtilsTests.IsSortedAscendingly(values)); 50 | 51 | values = new List(Constants.ArrayWithSortedDuplicateValues); 52 | sortMethod(values); 53 | Assert.IsTrue(UtilsTests.IsSortedAscendingly(values)); 54 | 55 | values = new List(Constants.ArrayWithReverselySortedDistinctValues); 56 | sortMethod(values); 57 | Assert.IsTrue(UtilsTests.IsSortedAscendingly(values)); 58 | 59 | values = new List(Constants.ArrayWithReverselySortedDuplicateValues); 60 | sortMethod(values); 61 | Assert.IsTrue(UtilsTests.IsSortedAscendingly(values)); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/StabilityCheckableVersions/ElementTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.Algorithms.Sort.StabilityCheckableVersions; 22 | using Microsoft.VisualStudio.TestTools.UnitTesting; 23 | 24 | namespace AlgorithmsAndDataStructuresTests.Algorithms.Sort 25 | { 26 | /// 27 | /// Tests methods in class. 28 | /// 29 | [TestClass] 30 | public class ElementTests 31 | { 32 | /// 33 | /// Tests the correctness of equality operation when comparing two objects of type Element. 34 | /// 35 | [TestMethod] 36 | public void Equals() 37 | { 38 | var element1 = new Element(1, 0); 39 | Assert.IsFalse(element1.Equals(null)); 40 | 41 | var element2 = new Element(1, 3); 42 | Assert.IsTrue(element1.Equals(element2)); 43 | } 44 | 45 | /// 46 | /// Tests the correctness of detecting stability of an Element. An Element is stable in an array if its index before and after sorting the array is the same. 47 | /// 48 | [TestMethod] 49 | public void IsStable() 50 | { 51 | var element1 = new Element(1, 0); // Element1: 1, 0, 0 52 | var element2 = new Element(2, 0); // Element2: 2, 0, 0 53 | 54 | Assert.IsFalse(element1.IsStable(element2)); 55 | 56 | var element3 = new Element(1, 2); // Element3 : 1, 2, 2 57 | Assert.IsTrue(element1.IsStable(element3)); /* Expects false, as newIndex is not decided yet. */ 58 | 59 | element1.Move(5); // Element1: 1, 0, 5 60 | element3.Move(3); // Element3 : 1, 2, 3 61 | Assert.IsFalse(element1.IsStable(element3)); /* Expects false, as element3 's old index is bigger but new index is smaller*/ 62 | 63 | element3.Move(8); // Element3: 1, 2, 8 64 | Assert.IsTrue(element1.IsStable(element3)); 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/StabilityCheckableVersions/QuickSortTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System.Collections.Generic; 22 | using AlgorithmsAndDataStructures.Algorithms.Sort; 23 | using AlgorithmsAndDataStructures.Algorithms.Sort.StabilityCheckableVersions; 24 | using Microsoft.VisualStudio.TestTools.UnitTesting; 25 | 26 | namespace AlgorithmsAndDataStructuresTests.Algorithms.Sort 27 | { 28 | public partial class QuickSortTests 29 | { 30 | /// 31 | /// Tests the stability of Quick sort algorithm. 32 | /// 33 | [TestMethod] 34 | public void IsStable() 35 | { 36 | /* We need to find "a" list with duplicate values, such that shows Quick sort is not stable. 37 | This does not mean that Quick sort is unstable for all arrays with duplicate values. */ 38 | var duplicateValues2 = new List { 4 , 2, 3, 4, 1, 1, 1}; 39 | List duplicateValuesElements2 = Utils.Convert(duplicateValues2); 40 | bool isStable2 = Utils.IsSortMethodStable(QuickSort.Wrapper, duplicateValuesElements2); 41 | Assert.IsFalse(isStable2); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Tests/Algorithms/Sort/StabilityCheckableVersions/SelectionSortTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System.Collections.Generic; 22 | using AlgorithmsAndDataStructures.Algorithms.Sort; 23 | using AlgorithmsAndDataStructures.Algorithms.Sort.StabilityCheckableVersions; 24 | using Microsoft.VisualStudio.TestTools.UnitTesting; 25 | 26 | namespace AlgorithmsAndDataStructuresTests.Algorithms.Sort 27 | { 28 | public partial class SelectionSortTests 29 | { 30 | /// 31 | /// Tests the stability of Selection sort algorithm. 32 | /// 33 | [TestMethod] 34 | public void IsStable() 35 | { 36 | /* All we need to do is to find "a" list with a particular arrangements of duplicate values and other distinct values, such that breaks isStable sort question for heap sort.. 37 | * Meaning that not finding this list, does not prove that the sort method is stable. 38 | * This also means that there might be lots of lists with duplicate values, for which heap sort acts as stable. 39 | */ 40 | var duplicateValues1 = new List { 4, 2, 3, 4, 1 }; 41 | List duplicateValuesElements1 = Utils.Convert(duplicateValues1); 42 | bool isStable = Utils.IsSortMethodStable(SelectionSort.Sort_Iteratively, duplicateValuesElements1); 43 | Assert.IsFalse(isStable); 44 | 45 | var duplicateValues4 = new List(Constants.ArrayWithReverselySortedDuplicateValues); 46 | List duplicateValuesElements4 = Utils.Convert(duplicateValues4); 47 | bool isStable4 = Utils.IsSortMethodStable(SelectionSort.Sort_Iteratively, duplicateValuesElements4); 48 | Assert.IsFalse(isStable4); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Tests/DataStructures/BinaryHeaps/Images/MaxBinaryHeap-Build.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/BinaryHeaps/Images/MaxBinaryHeap-Build.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/BinaryHeaps/Images/MaxBinaryHeap-Insert.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/BinaryHeaps/Images/MaxBinaryHeap-Insert.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/BinaryHeaps/Images/MaxBinaryHeap-TryRemoveRoot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/BinaryHeaps/Images/MaxBinaryHeap-TryRemoveRoot.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/BinaryHeaps/Images/MinBinaryHeap-Build.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/BinaryHeaps/Images/MinBinaryHeap-Build.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/BinaryHeaps/Images/MinBinaryHeap-Insert.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/BinaryHeaps/Images/MinBinaryHeap-Insert.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/BinaryHeaps/Images/MinBinaryHeap-TryRemoveRoot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/BinaryHeaps/Images/MinBinaryHeap-TryRemoveRoot.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/BinaryHeaps/Images/MinMaxBinaryHeap-Build-WithDuplicateKeys.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/BinaryHeaps/Images/MinMaxBinaryHeap-Build-WithDuplicateKeys.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/BinaryHeaps/Images/MinMaxBinaryHeap-Build.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/BinaryHeaps/Images/MinMaxBinaryHeap-Build.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/BinaryHeaps/Images/MinMaxBinaryHeap-Insert.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/BinaryHeaps/Images/MinMaxBinaryHeap-Insert.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/BinaryHeaps/Images/MinMaxBinaryHeap-TryRemoveRoot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/BinaryHeaps/Images/MinMaxBinaryHeap-TryRemoveRoot.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/LinkedLists/API/MockLinkedList.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | using AlgorithmsAndDataStructures.DataStructures.LinkedLists.API; 23 | using Microsoft.VisualStudio.TestTools.UnitTesting; 24 | 25 | namespace AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.API 26 | { 27 | /// 28 | /// Implements a mock for testing class. 29 | /// 30 | /// 31 | public class MockLinkedList : LinkedListBase, T1> where T1 : IComparable 32 | { 33 | /// 34 | /// Parameter-less constructor. 35 | /// 36 | public MockLinkedList() 37 | { 38 | } 39 | 40 | /// 41 | /// Constructor. 42 | /// 43 | /// Head/starting node of the list. 44 | public MockLinkedList(MockLinkedNode head) 45 | { 46 | _head = head; 47 | } 48 | 49 | /// 50 | /// Deletes a node with the given value from the list. If no node with the given value exists, fails the operation and returns false. 51 | /// 52 | /// The value that is being searched for. 53 | /// True in case of success, and false otherwise. 54 | public override bool Delete(T1 value) 55 | { 56 | throw new NotImplementedException(); 57 | } 58 | 59 | /// 60 | /// Inserts a new value in the list. 61 | /// 62 | /// The value of the new node. 63 | /// True in case of success. 64 | public override bool Insert(T1 newValue) 65 | { 66 | throw new NotImplementedException(); 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Tests/DataStructures/LinkedLists/API/MockLinkedNode.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System; 22 | using AlgorithmsAndDataStructures.DataStructures.LinkedLists.API; 23 | using Microsoft.VisualStudio.TestTools.UnitTesting; 24 | 25 | namespace AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists.API 26 | { 27 | /// 28 | /// Implements a mock class for testing . 29 | /// 30 | /// 31 | public class MockLinkedNode : LinkedNode, T1> where T1 : IComparable 32 | { 33 | /// 34 | /// Constructor 35 | /// 36 | /// Value to be stored in the node. 37 | public MockLinkedNode(T1 value) : base(value) { } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Tests/DataStructures/LinkedLists/DoublyLinkedNodeTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.DataStructures.LinkedLists; 22 | using Microsoft.VisualStudio.TestTools.UnitTesting; 23 | 24 | namespace AlgorithmsAndDataStructuresTests.DataStructures.LinkedLists 25 | { 26 | /// 27 | /// Tests methods in class. 28 | /// 29 | [TestClass] 30 | public class DoublyLinkedNodeTests 31 | { 32 | /// 33 | /// Tests the correctness of detecting whether a node is the head. 34 | /// 35 | [TestMethod] 36 | public void IsHead() 37 | { 38 | var node = new DoublyLinkedNode(10); 39 | Assert.IsTrue(node.IsHead()); 40 | node.Next = new DoublyLinkedNode(50); 41 | Assert.IsTrue(node.IsHead()); 42 | node.Previous = new DoublyLinkedNode(100); 43 | Assert.IsFalse(node.IsHead()); 44 | } 45 | 46 | /// 47 | /// Tests the correctness of detecting whether a node is the tail. 48 | /// 49 | [TestMethod] 50 | public void IsTail() 51 | { 52 | var node = new DoublyLinkedNode(10); 53 | Assert.IsTrue(node.IsTail()); 54 | node.Previous = new DoublyLinkedNode(100); 55 | Assert.IsTrue(node.IsTail()); 56 | node.Next = new DoublyLinkedNode(50); 57 | Assert.IsFalse(node.IsTail()); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Tests/DataStructures/StringStructures/StringSuffixTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.DataStructures.StringStructures; 22 | using Microsoft.VisualStudio.TestTools.UnitTesting; 23 | 24 | namespace AlgorithmsAndDataStructuresTests.StringStructures 25 | { 26 | /// 27 | /// Tests methods in class. 28 | /// 29 | [TestClass] 30 | public class StringSuffixTests 31 | { 32 | /// 33 | /// Tests the correctness of comparison operation. 34 | /// 35 | [TestMethod] 36 | public void CompareTo() 37 | { 38 | var suffix1 = new StringSuffix(0, 'a', 'b'); 39 | var suffix2 = new StringSuffix(0, 'a', 'b'); 40 | Assert.AreEqual(0, suffix1.CompareTo(suffix2)); 41 | 42 | var suffix3 = new StringSuffix(0, 'a', 'c'); 43 | Assert.AreEqual(-1, suffix1.CompareTo(suffix3)); 44 | Assert.AreEqual(-1, suffix2.CompareTo(suffix3)); 45 | Assert.AreEqual(1, suffix3.CompareTo(suffix1)); 46 | Assert.AreEqual(1, suffix3.CompareTo(suffix2)); 47 | 48 | var suffix4 = new StringSuffix(0, 'b', 'd'); 49 | Assert.AreEqual(1, suffix4.CompareTo(suffix1)); 50 | Assert.AreEqual(1, suffix4.CompareTo(suffix2)); 51 | Assert.AreEqual(1, suffix4.CompareTo(suffix3)); 52 | Assert.AreEqual(-1, suffix1.CompareTo(suffix4)); 53 | Assert.AreEqual(-1, suffix2.CompareTo(suffix4)); 54 | Assert.AreEqual(-1, suffix3.CompareTo(suffix4)); 55 | 56 | Assert.IsTrue(suffix1 == suffix2); 57 | Assert.IsTrue(suffix1 != suffix3); 58 | Assert.IsTrue(suffix1 != suffix4); 59 | 60 | Assert.IsTrue(suffix1 < suffix3); 61 | Assert.IsTrue(suffix1 <= suffix3); 62 | 63 | Assert.IsTrue(suffix4 > suffix3); 64 | Assert.IsTrue(suffix4 >= suffix3); 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /Tests/DataStructures/StringStructures/SuffixArrayTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.DataStructures.StringStructures; 22 | using Microsoft.VisualStudio.TestTools.UnitTesting; 23 | 24 | namespace AlgorithmsAndDataStructuresTests.StringStructures 25 | { 26 | /// 27 | /// Tests methods in class. 28 | /// 29 | [TestClass] 30 | public class SuffixArrayTests 31 | { 32 | /// 33 | /// Tests the correctness of Build operation. 34 | /// 35 | [TestMethod] 36 | public void SortSuffixes() 37 | { 38 | int[] suffixArray = SuffixArray.Build("banana"); 39 | Assert.AreEqual(5, suffixArray[0]); 40 | Assert.AreEqual(3, suffixArray[1]); 41 | Assert.AreEqual(1, suffixArray[2]); 42 | Assert.AreEqual(0, suffixArray[3]); 43 | Assert.AreEqual(4, suffixArray[4]); 44 | Assert.AreEqual(2, suffixArray[5]); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/Constants.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using System.Collections.Generic; 22 | namespace AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary 23 | { 24 | /// 25 | /// A collection of constants used in testing binary tree implementation. 26 | /// 27 | public class Constants 28 | { 29 | /// 30 | /// A set of key-value pairs to be inserted in trees. 31 | /// 32 | public static readonly List> KeyValues = new List> 33 | { 34 | new KeyValuePair(40, "E"), 35 | new KeyValuePair(50, "C"), 36 | new KeyValuePair(47, "A"), 37 | new KeyValuePair(45, "G"), 38 | new KeyValuePair(20, "D"), 39 | new KeyValuePair(35, "F"), 40 | new KeyValuePair(30, "B"), 41 | new KeyValuePair(10, "H"), 42 | new KeyValuePair(80, "I"), 43 | new KeyValuePair(42, "J") 44 | }; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/Images/avl-bst-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Binary/Images/avl-bst-delete.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/Images/avl-bst-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Binary/Images/avl-bst-insert.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/Images/avl-bst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Binary/Images/avl-bst.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/Images/bst-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Binary/Images/bst-delete.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/Images/bst-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Binary/Images/bst-insert.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/Images/bst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Binary/Images/bst.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/Images/redblack-bst-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Binary/Images/redblack-bst-delete.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/Images/redblack-bst-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Binary/Images/redblack-bst-insert.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/Images/redblack-bst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Binary/Images/redblack-bst.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Binary/RedBlackTreeNodeTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.DataStructures.Trees.Binary; 22 | using Microsoft.VisualStudio.TestTools.UnitTesting; 23 | 24 | namespace AlgorithmsAndDataStructuresTests.DataStructures.Trees.Binary 25 | { 26 | /// 27 | /// Tests methods in class. 28 | /// 29 | [TestClass] 30 | public class RedBlackTreeNodeTests 31 | { 32 | /// 33 | /// Tests the correctness of flipping a node's color. 34 | /// 35 | [TestMethod] 36 | public void FlipColor() 37 | { 38 | var A = new RedBlackTreeNode(2, "A", RedBlackTreeNodeColor.Red); 39 | Assert.AreEqual(RedBlackTreeNodeColor.Red, A.Color); 40 | 41 | var tree = new RedBlackTree(); 42 | 43 | A.FlipColor(); 44 | Assert.AreEqual(RedBlackTreeNodeColor.Black, A.Color); 45 | A.FlipColor(); 46 | Assert.AreEqual(RedBlackTreeNodeColor.Red, A.Color); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/2-3-4-BTreeNodeTests.cs: -------------------------------------------------------------------------------- 1 | #region copyright 2 | /* 3 | * Copyright (c) 2019 (PiJei) 4 | * 5 | * This file is part of AlgorithmsAndDataStructures project. 6 | * 7 | * AlgorithmsAndDataStructures is free software: you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation, either version 3 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * AlgorithmsAndDataStructures is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with AlgorithmsAndDataStructures. If not, see . 19 | */ 20 | #endregion 21 | using AlgorithmsAndDataStructures.DataStructures.Trees.Nary; 22 | using Microsoft.VisualStudio.TestTools.UnitTesting; 23 | 24 | namespace AlgorithmsAndDataStructuresTests.DataStructures.Trees.Nary 25 | { 26 | /// 27 | /// Tests BTreeNode implementation by a 2-3-4 BTree Node. 28 | /// 29 | [TestClass] 30 | public class _2_3_4_BTreeNodeTests 31 | { 32 | /// 33 | /// Tests the correctness of constructor. 34 | /// 35 | [TestMethod] 36 | public void Constructor_CheckingDegrees() 37 | { 38 | var node = new BTreeNode(4); 39 | Assert.AreEqual(2, node.MinBranchingDegree); 40 | Assert.AreEqual(4, node.MaxBranchingDegree); 41 | Assert.AreEqual(1, node.MinKeys); 42 | Assert.AreEqual(3, node.MaxKeys); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-B-Plus-Tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-B-Plus-Tree.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree-delete-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree-delete-Part1.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree-delete-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree-delete-Part2.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree-delete-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree-delete-Part3.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree-insert-Part1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree-insert-Part1.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree-insert-Part2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree-insert-Part2.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BPlus-Tree.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BTree-Insertion-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BTree-Insertion-Part1.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BTree-Insertion-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BTree-Insertion-Part2.png -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BTree-delete-Part1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BTree-delete-Part1.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BTree-delete-Part2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BTree-delete-Part2.PNG -------------------------------------------------------------------------------- /Tests/DataStructures/Trees/Nary/Images/2-3-BTree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/Tests/DataStructures/Trees/Nary/Images/2-3-BTree.png -------------------------------------------------------------------------------- /docfx_project/api/index.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docfx_project/articles/AlgorithmsAndDataStructures.md: -------------------------------------------------------------------------------- 1 | List of algorithms and data structures implemented in this repository. 2 | 3 | ## **Algorithms** 4 | 5 | ### Sorting Algorithms 6 | 1. Bubble Sort 7 | 1. Insertion Sort 8 | 1. Selection Sort 9 | 1. Quick Sort 10 | 1. Merge Sort 11 | 1. Heap Sort 12 | 1. Radix Sort 13 | 14 | 15 | ### Searching Algorithms 16 | 17 | 1. Linear Search 18 | 1. Hash Table 19 | 1. Binary Search 20 | 1. Ternary Search 21 | 1. Jump Search 22 | 1. Interpolation Search 23 | 1. Exponential Search 24 | 1. Fibonacci Search 25 | 26 | ### String Search Algorithms 27 | 28 | 1. RabinKarp Search 29 | 1. KMP Search 30 | 1. BoyerMoore Search 31 | 32 | 33 | ### Graphs 34 | 35 | Traversal Algorithms: 36 | 1. DFS (Depth First Search) 37 | 1. BFS (Breadth First Search) 38 | 1. Dijkstra Shortest Path 39 | 40 | 41 | ### Hashing 42 | 43 | ## **DataStructures** 44 | 45 | ### LinkedLists 46 | 47 | * SinglyLinked 48 | * DoublyLinked 49 | * DoublyLinkedSorted 50 | 51 | 52 | ### String Relevant 53 | 54 | * Suffix Tree 55 | * Suffix Array 56 | * LLPPS (LengthLongestProperPrefixSuffix) 57 | 58 | ### Heaps 59 | 60 | * Binary Min Heap 61 | * Binary Max Heap 62 | * Binary Min-Max Heap 63 | 64 | ### Trees 65 | Binary 66 | * Binary Search Tree (BST) 67 | * Red-Black Tree 68 | * AVL Tree 69 | 70 | Nary 71 | * B Tree 72 | * B+ Tree 73 | -------------------------------------------------------------------------------- /docfx_project/articles/intro.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/articles/intro.md -------------------------------------------------------------------------------- /docfx_project/docfx.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": [ 3 | { 4 | "src": [ 5 | { 6 | "files": [ 7 | "**.csproj" 8 | ], 9 | "src":"../" 10 | } 11 | ], 12 | "dest": "api", 13 | "disableGitFeatures": false, 14 | "disableDefaultFilter": false 15 | } 16 | ], 17 | "build": { 18 | "content": [ 19 | { 20 | "files": [ 21 | "api/**.yml", 22 | "api/index.md" 23 | ] 24 | }, 25 | { 26 | "files": [ 27 | "articles/**.md", 28 | "articles/**/toc.yml", 29 | "toc.yml", 30 | "*.md" 31 | ] 32 | } 33 | ], 34 | "resource": [ 35 | { 36 | "files": [ 37 | "images/**" 38 | ] 39 | } 40 | ], 41 | "overwrite": [ 42 | { 43 | "files": [ 44 | "apidoc/**.md" 45 | ], 46 | "exclude": [ 47 | "docfx_project/obj/**", 48 | "docs/**" 49 | ], 50 | "src":"../" 51 | } 52 | ], 53 | "dest": "../docs", 54 | "globalMetadataFiles": [], 55 | "fileMetadataFiles": [], 56 | "template": [ 57 | "default" 58 | ], 59 | "postProcessors": [], 60 | "markdownEngineName": "markdig", 61 | "noLangKeyword": false, 62 | "keepFileLink": false, 63 | "cleanupCacheHistory": false, 64 | "disableGitFeatures": false 65 | } 66 | } -------------------------------------------------------------------------------- /docfx_project/images/Graphs/BFS-Iterative-StartA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Graphs/BFS-Iterative-StartA.png -------------------------------------------------------------------------------- /docfx_project/images/Graphs/BFS-Iterative-StartE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Graphs/BFS-Iterative-StartE.png -------------------------------------------------------------------------------- /docfx_project/images/Graphs/BFS-Recursive-StartA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Graphs/BFS-Recursive-StartA.png -------------------------------------------------------------------------------- /docfx_project/images/Graphs/BFS-Recursive-StartE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Graphs/BFS-Recursive-StartE.png -------------------------------------------------------------------------------- /docfx_project/images/Graphs/DFS-Iterative-StartA.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Graphs/DFS-Iterative-StartA.PNG -------------------------------------------------------------------------------- /docfx_project/images/Graphs/DFS-Iterative-StartE.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Graphs/DFS-Iterative-StartE.PNG -------------------------------------------------------------------------------- /docfx_project/images/Graphs/DFS-Recursive-StartA.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Graphs/DFS-Recursive-StartA.PNG -------------------------------------------------------------------------------- /docfx_project/images/Graphs/DFS-Recursive-StartE.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Graphs/DFS-Recursive-StartE.PNG -------------------------------------------------------------------------------- /docfx_project/images/Graphs/Disjkstra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Graphs/Disjkstra.png -------------------------------------------------------------------------------- /docfx_project/images/Graphs/Graph-BFS-DFS.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Graphs/Graph-BFS-DFS.PNG -------------------------------------------------------------------------------- /docfx_project/images/Heaps/MaxBinaryHeap-Build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Heaps/MaxBinaryHeap-Build.png -------------------------------------------------------------------------------- /docfx_project/images/Heaps/MaxBinaryHeap-Insert.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Heaps/MaxBinaryHeap-Insert.PNG -------------------------------------------------------------------------------- /docfx_project/images/Heaps/MaxBinaryHeap-TryRemoveRoot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Heaps/MaxBinaryHeap-TryRemoveRoot.PNG -------------------------------------------------------------------------------- /docfx_project/images/Heaps/MinBinaryHeap-Build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Heaps/MinBinaryHeap-Build.png -------------------------------------------------------------------------------- /docfx_project/images/Heaps/MinBinaryHeap-Insert.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Heaps/MinBinaryHeap-Insert.PNG -------------------------------------------------------------------------------- /docfx_project/images/Heaps/MinBinaryHeap-TryRemoveRoot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Heaps/MinBinaryHeap-TryRemoveRoot.PNG -------------------------------------------------------------------------------- /docfx_project/images/Heaps/MinMaxBinaryHeap-Build-WithDuplicateKeys.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Heaps/MinMaxBinaryHeap-Build-WithDuplicateKeys.PNG -------------------------------------------------------------------------------- /docfx_project/images/Heaps/MinMaxBinaryHeap-Build.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Heaps/MinMaxBinaryHeap-Build.PNG -------------------------------------------------------------------------------- /docfx_project/images/Heaps/MinMaxBinaryHeap-Insert.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Heaps/MinMaxBinaryHeap-Insert.PNG -------------------------------------------------------------------------------- /docfx_project/images/Heaps/MinMaxBinaryHeap-TryRemoveRoot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Heaps/MinMaxBinaryHeap-TryRemoveRoot.PNG -------------------------------------------------------------------------------- /docfx_project/images/Search/BinarySearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/BinarySearch-Distinct.png -------------------------------------------------------------------------------- /docfx_project/images/Search/BinarySearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/BinarySearch-Duplicate.png -------------------------------------------------------------------------------- /docfx_project/images/Search/BinarySearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/BinarySearch-Missing.png -------------------------------------------------------------------------------- /docfx_project/images/Search/ExponentialSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/ExponentialSearch-Distinct.png -------------------------------------------------------------------------------- /docfx_project/images/Search/ExponentialSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/ExponentialSearch-Duplicate.png -------------------------------------------------------------------------------- /docfx_project/images/Search/ExponentialSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/ExponentialSearch-Missing.png -------------------------------------------------------------------------------- /docfx_project/images/Search/FibonacciSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/FibonacciSearch-Distinct.png -------------------------------------------------------------------------------- /docfx_project/images/Search/FibonacciSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/FibonacciSearch-Duplicate.png -------------------------------------------------------------------------------- /docfx_project/images/Search/FibonacciSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/FibonacciSearch-Missing.png -------------------------------------------------------------------------------- /docfx_project/images/Search/HashTableSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/HashTableSearch-Distinct.png -------------------------------------------------------------------------------- /docfx_project/images/Search/HashTableSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/HashTableSearch-Duplicate.png -------------------------------------------------------------------------------- /docfx_project/images/Search/HashTableSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/HashTableSearch-Missing.png -------------------------------------------------------------------------------- /docfx_project/images/Search/InterpolationSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/InterpolationSearch-Distinct.png -------------------------------------------------------------------------------- /docfx_project/images/Search/InterpolationSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/InterpolationSearch-Duplicate.png -------------------------------------------------------------------------------- /docfx_project/images/Search/InterpolationSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/InterpolationSearch-Missing.png -------------------------------------------------------------------------------- /docfx_project/images/Search/JumpSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/JumpSearch-Distinct.png -------------------------------------------------------------------------------- /docfx_project/images/Search/JumpSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/JumpSearch-Duplicate.png -------------------------------------------------------------------------------- /docfx_project/images/Search/JumpSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/JumpSearch-Missing.png -------------------------------------------------------------------------------- /docfx_project/images/Search/LinearSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/LinearSearch-Distinct.png -------------------------------------------------------------------------------- /docfx_project/images/Search/LinearSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/LinearSearch-Duplicate.png -------------------------------------------------------------------------------- /docfx_project/images/Search/LinearSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/LinearSearch-Missing.png -------------------------------------------------------------------------------- /docfx_project/images/Search/TernarySearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/TernarySearch-Distinct.png -------------------------------------------------------------------------------- /docfx_project/images/Search/TernarySearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/TernarySearch-Duplicate.png -------------------------------------------------------------------------------- /docfx_project/images/Search/TernarySearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Search/TernarySearch-Missing.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/BubbleSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/BubbleSort-Part1.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/BubbleSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/BubbleSort-Part2.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/BubbleSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/BubbleSort-Part3.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/BubbleSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/BubbleSort-Part4.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/HeapSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/HeapSort-Part1.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/HeapSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/HeapSort-Part2.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/HeapSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/HeapSort-Part3.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/HeapSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/HeapSort-Part4.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/HeapSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/HeapSort-Part5.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/HeapSort-Part6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/HeapSort-Part6.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/HeapSort-Part7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/HeapSort-Part7.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/HeapSort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/HeapSort.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/InsertionSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/InsertionSort-Part1.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/InsertionSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/InsertionSort-Part2.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/InsertionSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/InsertionSort-Part3.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/InsertionSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/InsertionSort-Part4.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/InsertionSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/InsertionSort-Part5.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/InsertionSort-Part6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/InsertionSort-Part6.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/InsertionSort-Part7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/InsertionSort-Part7.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/InsertionSort-Part8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/InsertionSort-Part8.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/MergeSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/MergeSort-Part1.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/MergeSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/MergeSort-Part2.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/MergeSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/MergeSort-Part3.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/MergeSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/MergeSort-Part4.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/MergeSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/MergeSort-Part5.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/QuickSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/QuickSort-Part1.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/QuickSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/QuickSort-Part2.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/QuickSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/QuickSort-Part3.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/QuickSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/QuickSort-Part4.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/QuickSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/QuickSort-Part5.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/RadixSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/RadixSort-Part1.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/RadixSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/RadixSort-Part2.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/RadixSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/RadixSort-Part3.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/SelectionSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/SelectionSort-Part1.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/SelectionSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/SelectionSort-Part2.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/SelectionSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/SelectionSort-Part3.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/SelectionSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/SelectionSort-Part4.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/SelectionSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/SelectionSort-Part5.png -------------------------------------------------------------------------------- /docfx_project/images/Sorts/SelectionSort-Part6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Sorts/SelectionSort-Part6.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Binary/avl-bst-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Binary/avl-bst-delete.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Binary/avl-bst-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Binary/avl-bst-insert.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Binary/avl-bst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Binary/avl-bst.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Binary/bst-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Binary/bst-delete.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Binary/bst-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Binary/bst-insert.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Binary/bst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Binary/bst.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Binary/redblack-bst-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Binary/redblack-bst-delete.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Binary/redblack-bst-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Binary/redblack-bst-insert.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Binary/redblack-bst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Binary/redblack-bst.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-B-Plus-Tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-B-Plus-Tree.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BPlus-Tree-delete-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BPlus-Tree-delete-Part1.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BPlus-Tree-delete-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BPlus-Tree-delete-Part2.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BPlus-Tree-delete-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BPlus-Tree-delete-Part3.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BPlus-Tree-insert-Part1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BPlus-Tree-insert-Part1.PNG -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BPlus-Tree-insert-Part2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BPlus-Tree-insert-Part2.PNG -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BPlus-Tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BPlus-Tree.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BTree-Insert-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BTree-Insert-Part1.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BTree-delete-Part1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BTree-delete-Part1.PNG -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BTree-delete-Part2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BTree-delete-Part2.PNG -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BTree-insert-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BTree-insert-Part2.png -------------------------------------------------------------------------------- /docfx_project/images/Trees/Nary/2-3-BTree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docfx_project/images/Trees/Nary/2-3-BTree.png -------------------------------------------------------------------------------- /docfx_project/index.md: -------------------------------------------------------------------------------- 1 | # Algorithms and Data Structures in C# 2 | This repository includes a comprehensive collection of well-known fundamental algorithms and data structures of computer science implemented in C#. 3 | 4 | These algorithms and data structures are the basics behind *coding interview questions* and a deep understanding of their details is essential for passing these interviewes. 5 | 6 | - For a list of algorithms and data structures implemented in this repository see [Algorithms and Data Structures](articles/AlgorithmsAndDataStructures.md). 7 | - To contribute follow [coding guidelines](articles/CodingGuidelines.md). 8 | - To review code API see [API Documentation](api/AlgorithmsAndDataStructures.Algorithms.GraphTraversal.yml). 9 | 10 | ## **Main Features** 11 | - Algorithms are decorated with **time and space complexity** attributes. 12 | 13 | - For complex algorithms, for each unit test an **Images** folder is provided that shows the step by step execution of the algorithm. **Aftr all a picture is worth 1000 lines of code!** 14 | 15 | - This repository is paired with a [**Udemy Course**](https://www.udemy.com/instructor/course/2378432/) that teaches all the algorithms and data structures implemented here with **animated operations** over the same examples demonstrated via this repository's unit tests, and images. 16 | 17 | - When applicable some algorithms have both **iterative and recursive** versions. 18 | 19 | - All methods are tested by **unit tests**. Other than checking the corecteness of the implementation, unit tests help to understand how to use each data structure and algorithm. 20 | 21 | - All the public methods have **summaries and detailed comments** to explain the over all functionality and the logic behind each complex line of code. 22 | 23 | - **Docfx** is used to automatically generate **API Documentation** as the code evolves. 24 | 25 | 26 | 27 | ## **Disclaimer** 28 | - The code is extensively tested, and is correct only to the best of the knowledge of the authors. Yet the authors take no responsibility in the correctness of the code. Please use at your own risk. 29 | - The code, views, thoughts, and opinions expressed in this repository belong solely to the authors, and not necessarily to the author’s employer, organization, committee or other group or individual. 30 | 31 | ## **References** 32 | - https://www.geeksforgeeks.org 33 | - https://www.wikipedia.org 34 | - https://stackoverflow.com/ 35 | 36 | ## **Contact** 37 | - Send questions to [PiJei](https://github.com/PiJei) 38 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | title: Algorithms and Data Structures in C# 2 | description: A comprehensive implementation of fundamental data structures and algorithms of computer science and engineering in C# programming language 3 | 4 | plugins: 5 | - jekyll-sitemap 6 | - jekyll-seo-tag 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/articles/toc.html: -------------------------------------------------------------------------------- 1 |  2 |
3 |
4 |
5 |
6 | 7 | 8 |
9 |
10 |
11 |
12 | 13 | 18 |
19 |
20 |
21 |
-------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/favicon.ico -------------------------------------------------------------------------------- /docs/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /docs/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /docs/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /docs/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /docs/images/Graph-BFS-DFS.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graph-BFS-DFS.PNG -------------------------------------------------------------------------------- /docs/images/Graphs/BFS-Iterative-StartA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graphs/BFS-Iterative-StartA.png -------------------------------------------------------------------------------- /docs/images/Graphs/BFS-Iterative-StartE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graphs/BFS-Iterative-StartE.png -------------------------------------------------------------------------------- /docs/images/Graphs/BFS-Recursive-StartA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graphs/BFS-Recursive-StartA.png -------------------------------------------------------------------------------- /docs/images/Graphs/BFS-Recursive-StartE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graphs/BFS-Recursive-StartE.png -------------------------------------------------------------------------------- /docs/images/Graphs/DFS-Iterative-StartA.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graphs/DFS-Iterative-StartA.PNG -------------------------------------------------------------------------------- /docs/images/Graphs/DFS-Iterative-StartE.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graphs/DFS-Iterative-StartE.PNG -------------------------------------------------------------------------------- /docs/images/Graphs/DFS-Recursive-StartA.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graphs/DFS-Recursive-StartA.PNG -------------------------------------------------------------------------------- /docs/images/Graphs/DFS-Recursive-StartE.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graphs/DFS-Recursive-StartE.PNG -------------------------------------------------------------------------------- /docs/images/Graphs/Disjkstra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graphs/Disjkstra.png -------------------------------------------------------------------------------- /docs/images/Graphs/Graph-BFS-DFS.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Graphs/Graph-BFS-DFS.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MaxBinaryHeap-Build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MaxBinaryHeap-Build.png -------------------------------------------------------------------------------- /docs/images/Heaps/MaxBinaryHeap-BuildRecursive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MaxBinaryHeap-BuildRecursive.png -------------------------------------------------------------------------------- /docs/images/Heaps/MaxBinaryHeap-Insert.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MaxBinaryHeap-Insert.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MaxBinaryHeap-TryRemoveRoot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MaxBinaryHeap-TryRemoveRoot.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MinBinaryHeap-Build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinBinaryHeap-Build.png -------------------------------------------------------------------------------- /docs/images/Heaps/MinBinaryHeap-Insert.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinBinaryHeap-Insert.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MinBinaryHeap-TryRemoveRoot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinBinaryHeap-TryRemoveRoot.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MinMaxBinaryHeap-Build-WithDuplicateKeys.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinMaxBinaryHeap-Build-WithDuplicateKeys.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MinMaxBinaryHeap-Build.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinMaxBinaryHeap-Build.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MinMaxBinaryHeap-Insert.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinMaxBinaryHeap-Insert.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MinMaxBinaryHeap-TryRemoveRoot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinMaxBinaryHeap-TryRemoveRoot.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MinMaxHeap-Build-WithDuplicateKeys.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinMaxHeap-Build-WithDuplicateKeys.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MinMaxHeap-Build.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinMaxHeap-Build.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MinMaxHeap-Insert.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinMaxHeap-Insert.PNG -------------------------------------------------------------------------------- /docs/images/Heaps/MinMaxHeap-TryRemoveRoot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Heaps/MinMaxHeap-TryRemoveRoot.PNG -------------------------------------------------------------------------------- /docs/images/Search/BinarySearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/BinarySearch-Distinct.png -------------------------------------------------------------------------------- /docs/images/Search/BinarySearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/BinarySearch-Duplicate.png -------------------------------------------------------------------------------- /docs/images/Search/BinarySearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/BinarySearch-Missing.png -------------------------------------------------------------------------------- /docs/images/Search/BinarySearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/BinarySearch.png -------------------------------------------------------------------------------- /docs/images/Search/ExponentialSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/ExponentialSearch-Distinct.png -------------------------------------------------------------------------------- /docs/images/Search/ExponentialSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/ExponentialSearch-Duplicate.png -------------------------------------------------------------------------------- /docs/images/Search/ExponentialSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/ExponentialSearch-Missing.png -------------------------------------------------------------------------------- /docs/images/Search/FibonacciSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/FibonacciSearch-Distinct.png -------------------------------------------------------------------------------- /docs/images/Search/FibonacciSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/FibonacciSearch-Duplicate.png -------------------------------------------------------------------------------- /docs/images/Search/FibonacciSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/FibonacciSearch-Missing.png -------------------------------------------------------------------------------- /docs/images/Search/HashTableSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/HashTableSearch-Distinct.png -------------------------------------------------------------------------------- /docs/images/Search/HashTableSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/HashTableSearch-Duplicate.png -------------------------------------------------------------------------------- /docs/images/Search/HashTableSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/HashTableSearch-Missing.png -------------------------------------------------------------------------------- /docs/images/Search/InterpolationSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/InterpolationSearch-Distinct.png -------------------------------------------------------------------------------- /docs/images/Search/InterpolationSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/InterpolationSearch-Duplicate.png -------------------------------------------------------------------------------- /docs/images/Search/InterpolationSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/InterpolationSearch-Missing.png -------------------------------------------------------------------------------- /docs/images/Search/JumpSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/JumpSearch-Distinct.png -------------------------------------------------------------------------------- /docs/images/Search/JumpSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/JumpSearch-Duplicate.png -------------------------------------------------------------------------------- /docs/images/Search/JumpSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/JumpSearch-Missing.png -------------------------------------------------------------------------------- /docs/images/Search/LinearSearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/LinearSearch-Distinct.png -------------------------------------------------------------------------------- /docs/images/Search/LinearSearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/LinearSearch-Duplicate.png -------------------------------------------------------------------------------- /docs/images/Search/LinearSearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/LinearSearch-Missing.png -------------------------------------------------------------------------------- /docs/images/Search/TernarySearch-Distinct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/TernarySearch-Distinct.png -------------------------------------------------------------------------------- /docs/images/Search/TernarySearch-Duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/TernarySearch-Duplicate.png -------------------------------------------------------------------------------- /docs/images/Search/TernarySearch-Missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/TernarySearch-Missing.png -------------------------------------------------------------------------------- /docs/images/Search/TernarySearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Search/TernarySearch.png -------------------------------------------------------------------------------- /docs/images/Sorts/BubbleSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/BubbleSort-Part1.png -------------------------------------------------------------------------------- /docs/images/Sorts/BubbleSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/BubbleSort-Part2.png -------------------------------------------------------------------------------- /docs/images/Sorts/BubbleSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/BubbleSort-Part3.png -------------------------------------------------------------------------------- /docs/images/Sorts/BubbleSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/BubbleSort-Part4.png -------------------------------------------------------------------------------- /docs/images/Sorts/HeapSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/HeapSort-Part1.png -------------------------------------------------------------------------------- /docs/images/Sorts/HeapSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/HeapSort-Part2.png -------------------------------------------------------------------------------- /docs/images/Sorts/HeapSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/HeapSort-Part3.png -------------------------------------------------------------------------------- /docs/images/Sorts/HeapSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/HeapSort-Part4.png -------------------------------------------------------------------------------- /docs/images/Sorts/HeapSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/HeapSort-Part5.png -------------------------------------------------------------------------------- /docs/images/Sorts/HeapSort-Part6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/HeapSort-Part6.png -------------------------------------------------------------------------------- /docs/images/Sorts/HeapSort-Part7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/HeapSort-Part7.png -------------------------------------------------------------------------------- /docs/images/Sorts/HeapSort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/HeapSort.png -------------------------------------------------------------------------------- /docs/images/Sorts/InsertionSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/InsertionSort-Part1.png -------------------------------------------------------------------------------- /docs/images/Sorts/InsertionSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/InsertionSort-Part2.png -------------------------------------------------------------------------------- /docs/images/Sorts/InsertionSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/InsertionSort-Part3.png -------------------------------------------------------------------------------- /docs/images/Sorts/InsertionSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/InsertionSort-Part4.png -------------------------------------------------------------------------------- /docs/images/Sorts/InsertionSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/InsertionSort-Part5.png -------------------------------------------------------------------------------- /docs/images/Sorts/InsertionSort-Part6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/InsertionSort-Part6.png -------------------------------------------------------------------------------- /docs/images/Sorts/InsertionSort-Part7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/InsertionSort-Part7.png -------------------------------------------------------------------------------- /docs/images/Sorts/InsertionSort-Part8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/InsertionSort-Part8.png -------------------------------------------------------------------------------- /docs/images/Sorts/MergeSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/MergeSort-Part1.png -------------------------------------------------------------------------------- /docs/images/Sorts/MergeSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/MergeSort-Part2.png -------------------------------------------------------------------------------- /docs/images/Sorts/MergeSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/MergeSort-Part3.png -------------------------------------------------------------------------------- /docs/images/Sorts/MergeSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/MergeSort-Part4.png -------------------------------------------------------------------------------- /docs/images/Sorts/MergeSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/MergeSort-Part5.png -------------------------------------------------------------------------------- /docs/images/Sorts/QuickSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/QuickSort-Part1.png -------------------------------------------------------------------------------- /docs/images/Sorts/QuickSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/QuickSort-Part2.png -------------------------------------------------------------------------------- /docs/images/Sorts/QuickSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/QuickSort-Part3.png -------------------------------------------------------------------------------- /docs/images/Sorts/QuickSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/QuickSort-Part4.png -------------------------------------------------------------------------------- /docs/images/Sorts/QuickSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/QuickSort-Part5.png -------------------------------------------------------------------------------- /docs/images/Sorts/QuickSort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/QuickSort.png -------------------------------------------------------------------------------- /docs/images/Sorts/RadixSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/RadixSort-Part1.png -------------------------------------------------------------------------------- /docs/images/Sorts/RadixSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/RadixSort-Part2.png -------------------------------------------------------------------------------- /docs/images/Sorts/RadixSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/RadixSort-Part3.png -------------------------------------------------------------------------------- /docs/images/Sorts/RadixSort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/RadixSort.png -------------------------------------------------------------------------------- /docs/images/Sorts/SelectionSort-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/SelectionSort-Part1.png -------------------------------------------------------------------------------- /docs/images/Sorts/SelectionSort-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/SelectionSort-Part2.png -------------------------------------------------------------------------------- /docs/images/Sorts/SelectionSort-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/SelectionSort-Part3.png -------------------------------------------------------------------------------- /docs/images/Sorts/SelectionSort-Part4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/SelectionSort-Part4.png -------------------------------------------------------------------------------- /docs/images/Sorts/SelectionSort-Part5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/SelectionSort-Part5.png -------------------------------------------------------------------------------- /docs/images/Sorts/SelectionSort-Part6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/SelectionSort-Part6.png -------------------------------------------------------------------------------- /docs/images/Sorts/SelectionSort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Sorts/SelectionSort.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/avl-bst-delete-stepBystep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/avl-bst-delete-stepBystep.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/avl-bst-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/avl-bst-delete.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/avl-bst-insert-stepByStep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/avl-bst-insert-stepByStep.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/avl-bst-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/avl-bst-insert.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/avl-bst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/avl-bst.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/bst-delete-stepBystep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/bst-delete-stepBystep.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/bst-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/bst-delete.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/bst-insert-stepBystep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/bst-insert-stepBystep.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/bst-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/bst-insert.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/bst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/bst.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/redblack-bst-delete-stepBystep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/redblack-bst-delete-stepBystep.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/redblack-bst-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/redblack-bst-delete.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/redblack-bst-insert-stepBystep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/redblack-bst-insert-stepBystep.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/redblack-bst-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/redblack-bst-insert.png -------------------------------------------------------------------------------- /docs/images/Trees/Binary/redblack-bst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Binary/redblack-bst.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-B-Plus-Tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-B-Plus-Tree.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BPlus-Tree-delete-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BPlus-Tree-delete-Part1.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BPlus-Tree-delete-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BPlus-Tree-delete-Part2.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BPlus-Tree-delete-Part3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BPlus-Tree-delete-Part3.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BPlus-Tree-delete-stepBystep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BPlus-Tree-delete-stepBystep.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BPlus-Tree-insert-Part1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BPlus-Tree-insert-Part1.PNG -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BPlus-Tree-insert-Part2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BPlus-Tree-insert-Part2.PNG -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BPlus-Tree-insert-stepBystep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BPlus-Tree-insert-stepBystep.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BPlus-Tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BPlus-Tree.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BTree-Insert-Part1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BTree-Insert-Part1.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BTree-delete-Part1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BTree-delete-Part1.PNG -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BTree-delete-Part2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BTree-delete-Part2.PNG -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BTree-delete-stepBystep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BTree-delete-stepBystep.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BTree-insert-Part1 - Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BTree-insert-Part1 - Copy.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BTree-insert-Part2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BTree-insert-Part2.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BTree-insert-stepBystep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BTree-insert-stepBystep.png -------------------------------------------------------------------------------- /docs/images/Trees/Nary/2-3-BTree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/images/Trees/Nary/2-3-BTree.png -------------------------------------------------------------------------------- /docs/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by Docfx 9 | 10 | 12 | 15 | 21 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /docs/search-stopwords.json: -------------------------------------------------------------------------------- 1 | [ 2 | "a", 3 | "able", 4 | "about", 5 | "across", 6 | "after", 7 | "all", 8 | "almost", 9 | "also", 10 | "am", 11 | "among", 12 | "an", 13 | "and", 14 | "any", 15 | "are", 16 | "as", 17 | "at", 18 | "be", 19 | "because", 20 | "been", 21 | "but", 22 | "by", 23 | "can", 24 | "cannot", 25 | "could", 26 | "dear", 27 | "did", 28 | "do", 29 | "does", 30 | "either", 31 | "else", 32 | "ever", 33 | "every", 34 | "for", 35 | "from", 36 | "get", 37 | "got", 38 | "had", 39 | "has", 40 | "have", 41 | "he", 42 | "her", 43 | "hers", 44 | "him", 45 | "his", 46 | "how", 47 | "however", 48 | "i", 49 | "if", 50 | "in", 51 | "into", 52 | "is", 53 | "it", 54 | "its", 55 | "just", 56 | "least", 57 | "let", 58 | "like", 59 | "likely", 60 | "may", 61 | "me", 62 | "might", 63 | "most", 64 | "must", 65 | "my", 66 | "neither", 67 | "no", 68 | "nor", 69 | "not", 70 | "of", 71 | "off", 72 | "often", 73 | "on", 74 | "only", 75 | "or", 76 | "other", 77 | "our", 78 | "own", 79 | "rather", 80 | "said", 81 | "say", 82 | "says", 83 | "she", 84 | "should", 85 | "since", 86 | "so", 87 | "some", 88 | "than", 89 | "that", 90 | "the", 91 | "their", 92 | "them", 93 | "then", 94 | "there", 95 | "these", 96 | "they", 97 | "this", 98 | "tis", 99 | "to", 100 | "too", 101 | "twas", 102 | "us", 103 | "wants", 104 | "was", 105 | "we", 106 | "were", 107 | "what", 108 | "when", 109 | "where", 110 | "which", 111 | "while", 112 | "who", 113 | "whom", 114 | "why", 115 | "will", 116 | "with", 117 | "would", 118 | "yet", 119 | "you", 120 | "your" 121 | ] 122 | -------------------------------------------------------------------------------- /docs/styles/main.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/docs/styles/main.css -------------------------------------------------------------------------------- /docs/styles/main.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information. 2 | -------------------------------------------------------------------------------- /docs/styles/search-worker.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | importScripts('lunr.min.js'); 3 | 4 | var lunrIndex; 5 | 6 | var stopWords = null; 7 | var searchData = {}; 8 | 9 | lunr.tokenizer.seperator = /[\s\-\.]+/; 10 | 11 | var stopWordsRequest = new XMLHttpRequest(); 12 | stopWordsRequest.open('GET', '../search-stopwords.json'); 13 | stopWordsRequest.onload = function () { 14 | if (this.status != 200) { 15 | return; 16 | } 17 | stopWords = JSON.parse(this.responseText); 18 | buildIndex(); 19 | } 20 | stopWordsRequest.send(); 21 | 22 | var searchDataRequest = new XMLHttpRequest(); 23 | 24 | searchDataRequest.open('GET', '../index.json'); 25 | searchDataRequest.onload = function () { 26 | if (this.status != 200) { 27 | return; 28 | } 29 | searchData = JSON.parse(this.responseText); 30 | 31 | buildIndex(); 32 | 33 | postMessage({ e: 'index-ready' }); 34 | } 35 | searchDataRequest.send(); 36 | 37 | onmessage = function (oEvent) { 38 | var q = oEvent.data.q; 39 | var hits = lunrIndex.search(q); 40 | var results = []; 41 | hits.forEach(function (hit) { 42 | var item = searchData[hit.ref]; 43 | results.push({ 'href': item.href, 'title': item.title, 'keywords': item.keywords }); 44 | }); 45 | postMessage({ e: 'query-ready', q: q, d: results }); 46 | } 47 | 48 | function buildIndex() { 49 | if (stopWords !== null && !isEmpty(searchData)) { 50 | lunrIndex = lunr(function () { 51 | this.pipeline.remove(lunr.stopWordFilter); 52 | this.ref('href'); 53 | this.field('title', { boost: 50 }); 54 | this.field('keywords', { boost: 20 }); 55 | 56 | for (var prop in searchData) { 57 | if (searchData.hasOwnProperty(prop)) { 58 | this.add(searchData[prop]); 59 | } 60 | } 61 | 62 | var docfxStopWordFilter = lunr.generateStopWordFilter(stopWords); 63 | lunr.Pipeline.registerFunction(docfxStopWordFilter, 'docfxStopWordFilter'); 64 | this.pipeline.add(docfxStopWordFilter); 65 | this.searchPipeline.add(docfxStopWordFilter); 66 | }); 67 | } 68 | } 69 | 70 | function isEmpty(obj) { 71 | if(!obj) return true; 72 | 73 | for (var prop in obj) { 74 | if (obj.hasOwnProperty(prop)) 75 | return false; 76 | } 77 | 78 | return true; 79 | } 80 | })(); 81 | -------------------------------------------------------------------------------- /docs/toc.html: -------------------------------------------------------------------------------- 1 |  2 |
3 |
4 |
5 |
6 | 7 | 8 |
9 |
10 |
11 |
12 | 13 | 27 |
28 |
29 |
30 |
-------------------------------------------------------------------------------- /test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/algorithms_in_csharp/fa8f9ea50c3ce4205ed565730bc34034096aac5e/test --------------------------------------------------------------------------------