Algorithms Data structures and algorithms in Java with test Data Structures simple linked list queue with linked list hash map binary tree binary search tree AVL tree heap disjoint-set / union-find disjoint-set / union-find with path compression Sorting merge sort with O(n log n) space complexity merge sort with O(n) space complexity merge sort for linked list quick sort quick sort using middle index as pivot insert sort selection sort Graphs adjacency list representation adjacency matrix representation Dijkstra algorithm for shortest path with adjacency list Kruskal's Minimum Spanning Tree Algorithm Prim's Minimum Spanning Tree Algorithm