A curated collection of Python scripts developed during the course "Introduzione agli Algoritmi" at La Sapienza University of Rome.
This repository contains implementations of fundamental algorithms and data structures, organized by topic, along with exercises and examples.
- Clean, well‑structured Python implementations
- Exercises grouped by algorithmic topic
- Focus on both theory and practice
- Ready to use for study, revision, or teaching
- Description
- Algorithms' Computational Complexity
- Search Algorithms
- Recursion
- Sorting Algorithms
- Data Structures
- Getting Started
- Contributing
- License
This repository collects Python scripts written as part of the Introduction to Algorithms course.
Each script demonstrates the implementation of a specific algorithm or data structure, accompanied by exercises that reinforce the concepts.
Scripts and notes covering:
- Big‑O, Big‑Ω, Big‑Θ notation
- Time and space complexity analysis
- Practical examples of complexity evaluation
Implementations include:
- Linear Search
- Binary Search
- Recursive and iterative approaches
Examples of recursive problem solving:
- Factorial
- Fibonacci sequence
- Recursive tree traversals
- Divide‑and‑conquer strategies
Classic sorting techniques:
- Bubble Sort
- Insertion Sort
- Selection Sort
- Merge Sort
- Quick Sort
- Array‑based lists
- Linked lists (singly and doubly linked)
- Stack (LIFO)
- Queue (FIFO)
- Circular queues
- Deque implementations
- Binary Trees
- Binary Search Trees (BST)
- Tree traversals (preorder, inorder, postorder, level‑order)
- Balanced BST implementation
- Insertions and deletions with rotations
- Ensuring logarithmic height
- Python 3.8+
- Git
git clone https://github.com/GCRA101/Algorithms-and-Data-Structures.git
cd Algorithms-and-Data-Structures