This repository contains implementations of various data structures and algorithms in Python. The code is organized into four main categories: Data Structures, Search Algorithms, Sorting Algorithms, and Graph Algorithms.
ROOT
│
├── DATA STRUCTURES
│ ├── arrays.py
│ ├── avl_tree.py
│ ├── binary_search_tree.py
│ ├── b_tree.py
│ ├── binary_heap.py
│ ├── cartesian_tree.py
│ ├── doubly_linked_list.py
│ ├── fibonacci_heap.py
│ ├── hash_tables.py
│ ├── kd_tree.py
│ ├── priority_queue.py
│ ├── queue.py
│ ├── red_black_tree.py
│ ├── singly_linked_list.py
│ ├── skip_list.py
│ ├── stack.py
│ └── trie.py
│
├── SEARCH ALGORITHMS
│ ├── a_star_search.py
│ ├── binary_search.py
│ ├── boyer_moore_string_search.py
│ ├── breadth_first_search.py
│ ├── depth_first_search.py
│ ├── fibonacci_search.py
│ ├── floyd_cycle_detection.py
│ ├── interpolation_search.py
│ ├── jump_search.py
│ ├── knuth_morris_pratt_search.py
│ ├── linear_search.py
│ ├── manacher_algorithm.py
│ ├── rabin_karp_search.py
│ ├── recursive_binary_search.py
│ ├── suffix_array_search.py
│ ├── ternary_search.py
│ └── z_algorithm.py
│
├── SORTING ALGORITHMS
│ ├── bogo_sort.py
│ ├── bubble_sort.py
│ ├── bucket_sort.py
│ ├── cocktail_sort.py
│ ├── comb_sort.py
│ ├── counting_sort.py
│ ├── cube_sort.py
│ ├── heap_sort.py
│ ├── insertion_sort.py
│ ├── linked_list_merge_sort.py
│ ├── merge_sort.py
│ ├── quicksort.py
│ ├── radix_sort.py
│ ├── selection_sort.py
│ ├── shell_sort.py
│ ├── timsort.py
│ └── tree_sort.py
│
├── GRAPH ALGORITHMS
│ ├── articulation_points.py
│ ├── bellman_ford_algorithm.py
│ ├── dijkstra's_algorithm.py
│ ├── edmonds-karp_algorithm.py
│ ├── floyd_warshall_algorithm.py
│ ├── kosaraju's_algorithm.py
│ ├── kruskal's_algorithm.py
│ ├── maximum_bipartite_matching.py
│ ├── prim's_algorithm.py
│ └── topological_sort.py
│
├── Dynamic Programming
│ ├── coin_change.py
│ ├── edit_distance.py
│ ├── fibonacci_sequence.py
│ ├── knapsack_01.py
│ ├── longest_common_subsequence.py
│ ├── maximum_subarrray.py
│
└── UTILITIES
├── load.py
└── recursion.py
I'm personally using it to better understand data structures and algorithms. Will probably use large datasets to compare and contrast.
Feel free to contribute by adding new algorithms or fixing any mistakes I have made. Please ensure that your code follows the existing structure and includes appropriate documentation and test cases. If you can't tell, I LOVE documentation.
This project is open source and available under the MIT License.