This is a sorting algorithm visualizer written in C++ using OpenGL. I learned a lot through this project whether it be setting up a C++ environment, installing 3rd party dependencies, or safe pointer practices.
The GIF above displays the following sorting 50 random numbers (1-100)
- Bubble Sort
- Average speed: O( n^2 )
- Average memory: O( 1 )
- Merge Sort
- Average speed: O( n logn )
- Average memory: O( n )
- Quick Sort O( n logn )
- Average speed: O( n logn )
- Average memory: O( logn )
Of the three, quick sort is often seen as the best because it is more practical with it requiring less memory and having a better cache performance. Merge sort is prefered when stability is needed.
Example build file for VS Code
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang++ build active file",
"command": "/usr/bin/clang++",
"args": [
"-std=c++17",
"-fcolor-diagnostics",
"-fansi-escape-codes",
"-Wall",
"-g",
"-I${workspaceFolder}/dependencies/include",
"-I${workspaceFolder}/dependencies/library",
"${workspaceFolder}/src/*.cpp",
"${workspaceFolder}/src/algorithms/*.cpp",
"${workspaceFolder}/dependencies/library/libglfw.3.4.dylib",
"-o",
"${workspaceFolder}/app",
"-framework",
"OpenGL"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: /usr/bin/clang++"
}
]
}
