A command line application that helps the user sort subjective lists, written as first non-trivial c# project
- Subjecting sorting of lists based off user input
- uses a implementation of quick sort modified for subjective user rankings
- stores comparisons to reduce those made by user
- Support for any list of strings
- Supports saving during sorting to return to sorting later
External use is not necessarily maintained.
- Prerequisites This project requires .NET 8.0 SDK or later. Check for installation with:
dotnet --version
-
Clone Repository git clone https://github.com/ReeceW18/Sorter.git
-
Build
dotnet build
- Run
dotnet run
- Run once to create folders
- Folder "SubjectiveSortingHelper" is added to OS myDocuments folder all files are stored here, put files you want to sort in /privateLists
- File should contain a different item to be sorted on each line
- Select 1 to sort new file
- Select file index of file to be sorted
- Select roughly middle most element, don't overthink it. A better choice will lead to less choices later but do not let the decision overwhelm you
- Select larger element index or select 0 to save current sorting state and return to start
- repeat 5 and 6 until sorted
- Sorted file is stored in /sortedLists
Base sorting algorithm is quick sort, where the user selects the pivots. If the user selects sufficiently mid elements this allows for fewer comparisons than by a simple merge sort.
Stores comparisons as the user makes them and infers further comparisons from transitive relationships. Allows for much fewer comparisons made by user.
- Officially support external use
- Further clean up code
- plenty of places with subpar logic or poor following of programming conventions
- Improve UI, particularly displaying lists
- Develop more clever ways to sort when involving user input
- Store comparisons as a directed graph instead of current messy implementation
- Consider edge cases and bugs that may arise from users imperfect sorting
- are there cases where the user can create contradictory rankings?