Welcome to the Algorithms Repository! This project is dedicated to providing implementations, explanations, and comparisons of various sorting and searching algorithms. Whether you're a student learning these concepts for the first time, a teacher seeking educational resources, or a professional looking to brush up on fundamentals, this repository has something for you.
Requirements
- Python 3.9+
- Poetry or Anaconda
- Jupyter
Contents
Sorting Algorithms
Here, we have a collection of some classic sorting algorithms, each with accompanying explanations and complexity analyses.
- Bubble Sort: A simple comparison-based sorting algorithm.
- Quick Sort: A divide-and-conquer sorting algorithm.
- Merge Sort: An efficient, stable sorting method.
- Insertion Sort: A simple, adaptive sorting algorithm.
- Selection Sort: An in-place comparison sorting algorithm.
- Heap Sort: A comparison-based sorting algorithm using a binary heap.
- Radix Sort: A non-comparative integer sorting algorithm.
- Shell Sort: A generalized version of insertion sort.
Searching Algorithms
This section provides a wide range of searching algorithms along with their unique characteristics, advantages, and disadvantages.
- Linear Search: A simple method that scans elements sequentially.
- Binary Search: A logarithmic search algorithm for sorted lists.
- Jump Search: A square root based searching method for sorted lists.
- Interpolation Search: A variant of binary search for uniformly distributed values.
- Hash Table Lookup: An efficient way to search using hash tables.
- Binary Search Tree Lookup: A tree-based search algorithm.
- B-Tree Search: A self-balancing tree structure used in databases and file systems.
- Red-Black Tree Search: A self-balancing binary search tree.
- Trie Search: An ordered tree data structure used for string-based keys.
Instructions
1. Clone the Project Locally
git clone https://github.com/mbeps/algorithms.git
2. Install Dependencies
You will need to install the project's dependencies. This is not required if your using Anaconda.
poetry install