And this project is done! This project was very interesting for me because I learned a lot about different sorting algorithms, their implementations, and when to use them!
A couple things that stood out to me:
- All of the quick algorithms were much faster than I anticipated on large number sequences
- Shell sort was much faster than I expected
- Heap sort was slower than I expected
- Counting sort is a monster I didn't expect (but looking back on it makes sense because it's almost similar to a hashmap)
Things I want to do with this in the future:
- Port it over to an Object Oriented Language (most likely C++) to create a cleaner main method and make it even easier to implement new algorithms.
- Add more customizable features in said port such as running individual sorts, running specific groups, or rerunning sorts.
- Add more things to keep track of (#Comparisons, #Swaps, Sort specific stats).
- Possibly take advantage of Linux Perf to look even further as to specific sorting statistics
Hello There!
This is a personal project where I will be implementing a large variety of sorting algorithms in a program and measuring their execution times.
This project stems from personal curiosity as well as a desire to sharpen my algorithmic skills and knowledge of the C language. I will be deriving the source code from scratch by analyzing the algorithms step by step in an effort to retain the information.
I have no real deadline or schedule for this project, but intend to complete it in a reasonable amount of time because of the different career advantages to be had by knowing the algorithms, strengths, and weaknesses of each sort.
- Bubble Sort
- Insertion Sort
- Selection Sort
- Shell Sort
- Cocktail Sort
- Merge Sort
- Quick Sort
- Heap Sort
- Radix Sort
- Counting Sort
- Architecture: x86_64
- CPU op-mode(s): 32-bit, 64-bit
- Byte Order: Little Endian
- CPU(s): 4
- On-line CPU(s) list: 0-3
- Thread(s) per core: 1
- Core(s) per socket: 4
- Socket(s): 1
- Vendor ID: GenuineIntel
- CPU family: 6
- Model: 94
- Model name: Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz
- Stepping: 3
- CPU MHz: 3501.000
- CPU max MHz: 3501.0000
- BogoMIPS: 7002.00
- Virtualization: VT-x
- Hypervisor vendor: vertical
- Virtualization type: full