Este proyecto es un visualizador interactivo de algoritmos de ordenamiento construido en Python con Pygame.
Permite visualizar en tiempo real el funcionamiento de distintos algoritmos de ordenamiento mediante barras animadas.
El sistema es modular, lo que significa que se pueden agregar nuevos algoritmos fácilmente en la carpeta algorithms/ sin modificar el código principal.
✅ Carga dinámica de algoritmos (cualquier .py en algorithms/ se detecta automáticamente).
✅ Menú interactivo con navegación (↑, ↓ para moverse, Enter para seleccionar).
✅ Visualización en tiempo real con estadísticas (nombre del algoritmo, iteraciones, tiempo).
✅ Modularidad (agrega algoritmos sin tocar sorting_visualizer.py).
✅ Optimizado con Pygame para animaciones fluidas.
sorting-visualizer/
│── algorithms/ # 📌 Carpeta donde se almacenan los algoritmos de ordenamiento
│ │── bubblesort.py # Bubble Sort
│ │── insertionsort.py # Insertion Sort
│ │── selectionsort.py # Selection Sort
│ │── shellsort.py # Shell Sort
│ │── quicksort.py # Quick Sort
│ │── mergesort.py # Merge Sort
│ │── heapsort.py # Heap Sort
│ │── timsort.py # TimSort
│── sorting_visualizer.py # 🎮 Código principal con la interfaz y ejecución de algoritmos
│── README.md # 📖 Documentación del proyecto
│── requirements.txt # 📦 Dependencias del proyecto
Para ejecutar este proyecto necesitas:
🔹 Python (3.8 o superior)
🔹 Pygame (para la visualización)
Si no tienes Python, descárgalo en: https://www.python.org/downloads/
git clone https://github.com/nipusan/sorting-visualizer.git
cd sorting-visualizerpython -m venv env- En Windows:
env\Scripts\activate- En macOS/Linux:
source env/bin/activatepip install -r requirements.txtpython sorting_visualizer.py- ⬆ (Flecha arriba): Moverse hacia arriba.
- ⬇ (Flecha abajo): Moverse hacia abajo.
- Enter: Seleccionar algoritmo y ejecutarlo.
- ESC: Salir del programa.
algorithms/radixsort.pyclass RadixSort:
name = "Radix Sort"
complexity = "O(nk)"
description = "Ordenamiento basado en dígitos con buckets."
@staticmethod
def sort(arr, draw_array):
# Implementación del algoritmo
passEl nuevo algoritmo aparecerá automáticamente en el menú sin modificar el código principal. 🎉
¡Sientete libre de contribuir! Puedes:
- Mejorar la interfaz gráfica.
- Agregar más algoritmos.
- Optimizar el rendimiento.
- Reportar bugs o sugerir mejoras.
Este proyecto está bajo la licencia MIT. Puedes usarlo libremente, pero se agradecen menciones o estrellas en GitHub ⭐.