Skip to content

TexablePlum/Sort_Algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sorting Algorithms Visualizer 🚀

logo

Sorting Algorithms Visualizer is an interactive desktop application that brings sorting algorithms to life through real-time visualizations. Built with C# and MonoGame/XNA, this application leverages asynchronous programming for smooth, non-blocking animations and features a fully responsive, custom UI that automatically resizes according to the current resolution.

Inspired by an engaging YouTube video on algorithm visualizations: Sorting Algorithms Visualization
this project was created to provide an intuitive and educational experience for both students and enthusiasts.


Features ✨

  • Responsive User Interface

    • The UI scales dynamically to any resolution. Changing the resolution updates the layout, and all UI components (buttons, panels, grids) automatically resize and reposition.
    • Enjoy a modern, sleek interface with custom-designed UI components that adjust in real time.
  • Interactive Sorting Visualizations

    • Visualize popular sorting algorithms such as Bubble Sort, Insertion Sort, Selection Sort, Merge Sort, Quick Sort, Heap Sort, Combo Sort, Cocktail Sort, Odd-Even Sort, and Randomize Shuffle.
    • Each algorithm includes detailed animations that highlight comparisons, swaps, and key steps, all implemented using asynchronous programming techniques.
  • Asynchronous Programming

    • Built using C# async/await, ensuring fluid animations and a responsive user experience even during complex sorting operations.
    • The asynchronous design allows user interactions to be handled smoothly without blocking the UI.
  • Customizable Settings

    • Modify settings such as screen resolution, number of lines, margins, and algorithm speed.
    • Settings are persistently saved to a JSON file in the AppData folder (%APPDATA%/Sorting_Algorithms_App/settings.json) and loaded upon startup. If the settings file or folder does not exist, they are automatically created with default values.
    • Enjoy automatic full-screen mode when using native resolution, and easily toggle between windowed and full-screen displays.
  • Stylish UI

    • Includes custom logo and option panels for selecting resolution and sorting algorithms.
    • Intuitive buttons and text boxes allow quick adjustments and interact with the visualizations.
    • The UI is designed to update dynamically as you change settings, ensuring a smooth transition between different modes.

Technologies Used 🛠️

  • C# – The primary language used for development.
  • MonoGame/XNA Framework – For graphics rendering and game loop management.
  • Asynchronous Programming (async/await) – Ensuring non-blocking, smooth animations and user interactions.
  • JSON – Used for saving and loading application settings.
  • Custom UI Components – Created specifically for this project to provide a responsive and modern look.

Getting Started

Prerequisites

Installation

  1. Clone the Repository:
  git clone https://github.com/TexablePlum/Sort_Algorithms.git
  cd Sort_Algorithms
  1. Build the Project: Open the solution file in Visual Studio (or your preferred IDE) and build the project, or use the command line:
dotnet build
  1. Run the Application:
dotnet run

Screenshots 📸

Start Screen Start Screen with responsive UI and dynamic resolution changing.

App Live visualization of a sorting algorithm in action.


Inspiration & Acknowledgments ❤️

This project was inspired by a YouTube video on sorting algorithms visualization:

Sorting Algorithms Visualization

The desire to understand and interact with sorting algorithms, combined with the visual power of asynchronous programming in C#, led to the creation of this application.


License 📄

This project is licensed under the MIT License. See the LICENSE file for details.


Enjoy exploring sorting algorithms! 🎉

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages