Tri pathologique
Votre patron vous a demandé de développer un algorithme de tri pour améliorer les performances de l'application de votre entreprise. Cependant, après avoir écrit la demande, vous savez qu'il est peu probable que vous puissiez la rendre beaucoup plus rapide. Ne voulant pas décevoir votre patron, vous avez décidé de développer un nouvel algorithme qui fonctionne encore mieux que * trier sur certains ensembles de données. Bien sûr, vous ne pouvez pas rendre évident que l'algorithme ne fonctionne que dans certains cas, vous voulez donc le rendre aussi obscur que possible.
L'objectif de ce concours est d'écrire une routine de tri dans la langue de votre choix qui fonctionne mieux sur certains ensembles de données que sur d'autres, avec des résultats reproductibles. Plus la classification qui détermine la vitesse est précise, mieux c'est. L'algorithme doit effectuer un tri quelconque, donc un algorithme qui dépend des données déjà triées complètement (comme dans, un algorithme qui ne fait rien), ou un algorithme qui dépend des données triées complètement en sens inverse, sont tous deux invalides. L'algorithme de tri doit trier correctement tout ensemble de données.
Après avoir présenté votre routine, veuillez expliquer pourquoi elle ne fonctionne que sur certains ensembles de données et inclure des tests sur au moins un ensemble de bonnes (rapides) données et un ensemble de mauvaises (lentes) données. Le but ici est de pouvoir prouver à votre patron que vous êtes tombé sur une meilleure façon de trier, donc plus de données de test sont meilleures. Bien sûr, vous allez seulement montrer à votre patron les résultats des tests à partir des bonnes données, donc la faille dans les données de test requises ne peut pas être trop évidente. Si cela s'applique à votre langue, veuillez montrer que votre algorithme est plus rapide que l'algorithme de tri intégré de votre langue.
Par exemple, on peut soumettre un algorithme de tri par insertion, les bonnes données étant des données déjà presque triées et les mauvaises données étant des données complètement aléatoires, car le tri par insertion approche O (n) sur des données presque triées. Cependant, ce n'est pas très bon, car mon patron remarquerait probablement que toutes les données de test sont presque triées pour commencer.
C'est un concours de popularité , donc la réponse avec le plus de votes après 7 jours (21 mai) l'emporte.
Si personne ne me bat, j'aimerais soumettre une réponse wiki communautaire qui tire parti d'ensembles de données uniformément distribués.