Ordinamento patologico
Il tuo capo ha richiesto lo sviluppo di un algoritmo di ordinamento per migliorare le prestazioni dell'applicazione della tua azienda. Tuttavia, dopo aver scritto l'applicazione, sai che è improbabile che tu sia in grado di renderlo significativamente più veloce. Non volendo deludere il tuo capo, hai deciso di sviluppare un nuovo algoritmo che funziona ancora meglio di * ordinare su determinati set di dati. Certo, non puoi rendere ovvio che l'algoritmo funziona solo in alcuni casi, quindi vuoi renderlo oscuro il più possibile.
L'obiettivo di questo concorso è quello di scrivere una routine di ordinamento nella lingua di tua scelta che si comporta meglio su determinati insiemi di dati rispetto ad altri, con risultati ripetibili. Più specifica è la classificazione che determina la velocità, meglio è. L'algoritmo deve eseguire un ordinamento di qualche tipo, quindi un algoritmo che dipende dai dati già completamente ordinati (come in, un algoritmo che non fa nulla) o un algoritmo che dipende dai dati che sono completamente ordinati al contrario, non sono entrambi validi. L'algoritmo di ordinamento deve ordinare correttamente qualsiasi set di dati.
Dopo aver presentato la tua routine, includi una spiegazione del perché funziona solo su determinati set di dati e includi le esecuzioni di test su almeno un set di dati buoni (veloci) e un set di dati cattivi (lenti). Il punto qui è essere in grado di dimostrare al tuo capo che ti sei imbattuto in un modo migliore per ordinare, quindi più dati di test sono migliori. Ovviamente, mostrerai al tuo capo solo i risultati dei test dai buoni dati, quindi il difetto nei dati di test richiesti non può essere troppo ovvio. Se applicabile alla tua lingua, indica che l'algoritmo è più veloce dell'algoritmo di ordinamento incorporato nella tua lingua.
Ad esempio, si potrebbe presentare un algoritmo di ordinamento per inserzione, con i dati buoni che sono già quasi ordinati e i dati cattivi sono dati completamente casuali, poiché l'ordinamento per inserzione si avvicina a O (n) su dati quasi ordinati. Tuttavia, questo non è molto buono, dal momento che il mio capo probabilmente noterà che tutti i dati dei test sono quasi ordinati all'inizio.
Questo è un concorso di popolarità , quindi vince la risposta con il maggior numero di voti dopo 7 giorni (21 maggio).
Se nessuno mi batte, mi piacerebbe inviare una risposta wiki della community che sfrutti set di dati distribuiti uniformemente.