https://github.com/rosnavigator/quickselect_challenge
https://github.com/rosnavigator/quickselect_challenge
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/rosnavigator/quickselect_challenge
- Owner: RosNaviGator
- Created: 2024-04-24T10:53:45.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-28T22:37:48.000Z (about 1 year ago)
- Last Synced: 2025-02-03T06:59:55.181Z (3 months ago)
- Language: Jupyter Notebook
- Size: 804 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Linear Select function
### Contributors:
Marco Cioci, Francesco Rosnati, Luca Tramacere## Context
### Course: Algoritmi e Architetture per il Calcolo ad Alte Prestazioni at Politecnico di MilanoThe project was developed as part of a Challenge/Project assigned by Professor Fabrizio Ferrandi during the course "Algoritmi e Architetture per il Calcolo ad Alte Prestazioni" at Politecnico di Milano. This course is offered as part of the elective courses in the Mathematical Engineering Bachelor program.
## Purpose of the Algorithm
Find the i-th smallest element in an unsorted array, with linear time complexity in the worst-case scenario.## General Description of the Steps of the Select Algorithm
## Content of the Repo and Instructions
### .ipynb Notebook
The notebook is self-contained, providing a comprehensive explanation and implementation of the project, including a GoogleBenchmark study at the end.
- It can be easily opened in Google Colab or any Notebook reader.
- Requires a C++ compiler; only standard C++ libraries are used.
- Python with matplotlib is required for plotting graphs.
- Google Benchmark will be installed during runtime, with commands already provided in the Notebook.### cppFiles (Old Versions)
- challenge2.cpp
- challenge3.cpp
- select.cpp
- testScripts.cppThese CPP files are previous versions of the project or test files, with select.cpp being the final version of the algorithm before moving it to a .ipynb notebook. Each file is standalone, containing main and all required functions. No classes were used in this project, as the primary goal was to achieve a specific threshold in terms of Google Benchmark performance, thus low level coding was the best choice. Compilation requires any standard compiler of C++, only standard C++ libraries are utilized.