this post was submitted on 16 Aug 2025
27 points (96.6% liked)

Data Structures and Algorithms

249 readers
1 users here now

A community dedicated to topics related to data structures and algorithms.

founded 2 years ago
MODERATORS
 

I'm currently working on a little web app that allows the user to sort a list of elements (like a tier-list maker).

Instead of just asking the user to sort the list through drag'n drop, I thought I could run a sorting algorithm that would ask the user every time it needs to make a comparison.

The whole thing would feel a bit magic, since you would have several questions like "Which one do you prefer, A or B?" and get your sorted list.

The question is: which algorithm should I use to keep the user entertained? I don't want to compare A with everything, then B with everything and so on with something like a Bubble Sort, that would be boring.

What do you think about it? Please be aware this is not a big project, just something I make out of curiosity. Thanks in advance!

Edit:
As an example, let's say I want to sort fruits by personal preference.
I have a list [Apple, Banana, Coconut, Durian, Eggplant, Fig, Grape] but no algorithm can tell if I prefer an apple or a banana so it needs to ask me.
What would be the questions an algorithm needs to ask me in order to sort the list of fruits for me?
The idea behind it is not to sort stuff but to spark discussion during the "comparison" step ("Ok, why do you prefer bananas to apples?"), that's why I need successive comparisons to be different, so it keeps the users' interest.

you are viewing a single comment's thread
view the rest of the comments
[โ€“] ExperimentalGuy@programming.dev 4 points 4 months ago (1 children)

I would break it into an interface that abstracts the sorting algorithm so that the sorting logic is decoupled from comparison logic or from the visuals. This would make it so that you can use different sorting algorithms and compare between them to see which one seems the most magical.

Magical might mean something different between us, so I don't want to assume and just give you an algo.

[โ€“] fargeol@lemmy.world 1 points 4 months ago

I already managed to break the code for my sorting algorithm to take an async lambda as a comparison function. Therefor I can choose my sorting algorithm on the fly.

As for magic, I thought the interface would show you pairs of elements that look randomly picked and after a while it gives you your sorted list. So, the "magical" thing would be that not-so-random selection of pairs