Questa domanda è stata posta una volta prima ma non è stata data risposta, quindi ho pensato di chiedere di nuovo con alcune specifiche della mia situazione.Algoritmo di ordinamento di elenchi per confronti effettuati dall'uomo
Sto provando a sviluppare un'applicazione che consente di inserire un elenco di elementi discreti (per questo esempio, frutta) e offre confronti tra due. Scegli il tuo preferito tra i due e poi questo processo si ripete finché alla fine hai una lista ordinata per preferenza di questi oggetti (in questo esempio, un elenco dei tuoi frutti preferiti, in ordine).
Il problema è che le tradizionali strategie di smistamento, non importa quanto velocemente, coinvolgeranno necessariamente più operazioni di quanto sia fattibile per un umano in qualsiasi ragionevole lasso di tempo (anche con una lista di soli 50, come il mio la lista di test corrente è).
Poiché ovviamente non esiste un algoritmo di ordinamento garantito con una complessità sufficientemente bassa, credo che alcune indennità debbano essere fatte. C'è un modo per saltare grandi blocchi di smistamento? Ho considerato un modo per assegnare valori alle voci in base al numero di confronti che hanno "vinto" e quindi arrestare l'ordinamento dopo un po 'e assumendo che quei valori danno l'ordine corretto, simile allo stile che si potrebbe risolvere con un scacchi svizzero torneo se non riesci a completare abbastanza round per determinare un vincitore normalmente. Non so se sia plausibile.
Un esempio per chiarire cosa intendo: dire che aveva una lista di
Apple
Orange
Kiwi
Banana
Melon
Sarebbe di offrire i confronti come
Do you prefer:
A Apple
B Kiwi
e così via fino a quando si dispone di un elenco che sembra
Kiwi
Apple
Orange
Melon
Banana
che è il vostro ordine di preferenza di quei frutti.
Quali sono esattamente i confronti offerti? Potresti chiarire cosa intendi mostrando i passi che dovresti fare con un array di 5 elementi? – jperezov
@jperezov ha aggiunto un esempio al mio post originale – CountBale
Questo può essere risolto con un approccio completamente diverso. Piuttosto che chiedere all'utente di classificare ogni singolo oggetto, dargli una lista e un modo semplice per spostare le cose su e giù nell'elenco. –