Visualizing sorting algorithms, using the matplotlib library.
Algorithms covered so far:
| Name | Function Name |
|---|---|
| Quick Sort | quick_sort |
| Bubble Sort | bubble_sort |
| Selection Sort | selection_sort |
| Insertion Sort | insertion_sort |
| Heap Sort | heap_sort |
| Merge Sort | merge_sort |
Install
pip install -r requirements.txt
Run
python main.py function_name
Pass function name as a command line argument from list of functions above (in all lower case and spaces replaced by underscore).
For example:
python main.py quick_sort
If you want to add a new sorting algorithm:
- Code the algorithm in
sorting.py. - Name the function appropriately, like
quick_sort,bubble_sort. - While coding the function, do not use python lists. Instead, use an
Arrayobject. TheArrayclass is defined insorting.py. (See already implemented algorithms, for your reference) - The
Arrayobject hasswap,set,get_len,getmethods implemented. Feel free to implement any more, additional methods, that you may see fit. - Make sure you add the sorting algorithm to the Readme file!
- Make sure your newly implemented algorithm works, by running
test.pyafter appending it to the list of algorithms intest.py.
#Newly added algorithm - Radix Sort using Counting Sort
Keeping the description short because of the time limit and giving the reference for more information.
Radix sort is non-comparative sorting algorithm.
Benefit:
Lower Bound for usual comparison based algorithms if O(nlog n ) while for radix sort is O(n+k) time when elements are in range from 1 to k.
Best reference: https://www.hackerearth.com/practice/algorithms/sorting/radix-sort/tutorial/