Learn Algorithms by seeing them in action! Algorithms made easy through animations made in python3 using tkinter library
- User Interface
- Features
- Algorithms Covered
- Cheat Sheet
- Things I learned while building this project
- Foreseeable future improvements
{% include youtubePlayer.html id="8jIHsbx6LHg" %}
- Generate rectangular components with random heights representing element values to be worked upon
- Change number of elements - 'Size' and dynamically update the rectangular components. 'Size' can range from 3 to 100
- Set 'Step-Delay' (in sec) - the time interval between each consecutive operation. Step-delay can range from 0.0-1.0 sec with a resolution of 0.1 sec
- Sliders have been provided for setting 'Size' and 'Step-Delay' thus eliminating the hassle of manual input
- Combobox for selecting Algorithm to visualize
- Counters for indicating 'Size' and 'Step-Delay'
NOTE: Although efforts have been made to keep the color scheme of the elements intuitive enough, if you wish to check a particular color you can look up the color reference provided for every algorithm
-
-
- Best : Ω(1)
- Average : θ(n)
- Worst : O(n)
- Grey bar : Elements
- Blue bar : Element to be searched
- White bar : Element currently checking for equivalence
- Green bar : Element found
- Red bar : Element found unequal
{% include youtubePlayer.html id="dEPZ1lXbwTs" %}
-
- Best : Ω(1)
- Average : θ(log n)
- Worst : O(log n)
- Grey bar : Elements
- Blue bar : Element to be searched
- Red bar : Elements discarded after checking
- Green bar : Element found
{% include youtubePlayer.html id="dEPZ1lXbwTs" %}
-
-
-
- Best : Ω(n)
- Average : θ(n^2)
- Worst : O(n^2)
- Grey bar : Elements
- Red bar : Elements not found in sorted order
- White bar : Element currently being compared
- Green bar : Element in sorted order
{% include youtubePlayer.html id="p1WbJWpqKqM" %}
-
- Best : Ω(n^2)
- Average : θ(n^2)
- Worst : O(n^2)
- Grey bar : Elements
- Blue bar : Element found to be minimum in that iteration
- White bar : Element being compared with minimum element
- Green bar : Element in sorted order
{% include youtubePlayer.html id="0VhsdJ9cMwQ" %}
-
- Best : Ω(n)
- Average : θ(n^2)
- Worst : O(n^2)
- Grey bar : Elements
- Blue bar : Element at key index (element to be inserted)
- White bar : Element
- Red bar : Element less than the element at key index
- Green bar : Element sorted
{% include youtubePlayer.html id="Py5_877vUQE" %}
-
- Best : Ω(nlog n)
- Average : θ(nlog n)
- Worst : O(nlog n)
- Grey bar : Elements
- Blue bar : Elements being compared while merging sorted elements
- White bar : Elements being sorted recursively
- Green bar : Element found smaller while merging sorted elements
{% include youtubePlayer.html id="QSUwjoiuP-s" %}
-
- Best : Ω(nlog n)
- Average : θ(nlog n)
- Worst : O(n^2)
- Grey bar : Elements
- Blue bar : Elements being compared while merging sorted elements
- White bar : Elements being sorted recursively
- Green bar : Element found smaller while merging sorted elements
-
- Best : Ω(nk)
- Average : θ(nk)
- Worst : O(nk)
- Grey bar : Elements
- Blue bar : Elements being compared while merging sorted elements
- White bar : Elements being sorted recursively
- Green bar : Element found smaller while merging sorted elements
- Increased my knowledge of algorithms
- Learned canvas object and its drawing functions in Tkinter
- Better UI design of desktop apps in Tkinter
- Embedding YouTube videos in Jekyll styled pages
- Adding more sorting algorithms
- Adding linked list and tree visualization capability
- Comparison feature between two algorithms side by side
- Selective control over elements like 'ascending','descending','random','almost sorted' to have better comparison in different circumstances
- Implement multi-threading to run tasks concurrently
- The whole visualization process implemented throught the matplotlib library
-