Skip to content

debasishuiuc/algorithms-in-python-and-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“š Algorithms in Python and Java

Python Jupyter License Status

This repository contains implementations of classic algorithms in both Python and Java, starting with content from Tim Roughgardenโ€™s Algorithms Illuminated and expanding to other sources over time.

It aims to provide clear explanations, step-by-step derivations, and performance analysis of fundamental algorithms.


๐Ÿ“ฆ Repository Structure

algorithms-in-python-and-java/
โ”œโ”€โ”€ python/
โ”‚   โ”œโ”€โ”€ multiplication/
โ”‚   โ”‚   โ””โ”€โ”€ multiplication_algorithms_final.ipynb
โ”‚   โ””โ”€โ”€ sorting/
โ”‚       โ””โ”€โ”€ sorting_algorithms_top10.ipynb
โ”œโ”€โ”€ java/
โ””โ”€โ”€ notes/

๐Ÿ““ Notebooks

  • multiplication_algorithms_final.ipynb
    ๐Ÿ“˜ Multiplication Algorithms Comparison:

    • โœ๏ธ Grade-School Multiplication
    • ๐Ÿ” Recursive Integer Multiplication (RecIntMult)
    • โšก Karatsuba Multiplication
    • ๐Ÿš€ Toom-Cook 3-Way Multiplication (educational simple version)
    • ๐ŸŒŠ FFT-Based Multiplication (basic polynomial convolution view)

    Includes:

    • ๐Ÿ“œ Mathematical derivations and intuition
    • ๐Ÿงฉ Full Python implementations
    • โฑ Timing experiments with random integers
    • ๐Ÿ“ˆ Log-log performance plots and complexity analysis
  • sorting_algorithms_top10.ipynb
    ๐Ÿ“— Sorting Algorithms Exploration:

    • ๐Ÿงน Simple Sorts (Insertion Sort, Shell Sort)
    • โš”๏ธ Divide and Conquer Sorts (Merge Sort, Quick Sort)
    • ๐Ÿ›  Heap-Based Sorts (Heap Sort, IntroSort)
    • ๐Ÿงฎ Non-Comparison-Based Sorts (Counting Sort, Radix Sort, Bucket Sort)

    Includes:

    • ๐Ÿ“œ Detailed algorithm descriptions with real-world examples
    • ๐Ÿงฉ Full Python implementations
    • โฑ Benchmarking experiments from n = 100 to 1000
    • ๐Ÿ“ˆ Log-log performance plots with fitted slopes for empirical complexity analysis

๐Ÿง  Future Work

  • Expanding into sorting, searching, graph algorithms, dynamic programming, etc.
  • Adding Java implementations alongside Python.
  • More educational content focused on learning algorithms deeply.

๐Ÿš€ Goal

Build a self-contained educational resource for students, researchers, and anyone interested in mastering algorithms both theoretically and practically.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published