J'ai ce tableau: Quel est le moyen optimal de trier ce tableau, en pseudocode? p> Merci! P> P>
4 Réponses :
Je pense que cela devrait être assez rapide (ordre croissant):
Votre bulle classique déroulée tri :-) +1.
Ce code fait 2 ou 3 comparaisons et 4 enregistrements de mémoire dans le pire des cas, par opposition à une autre réponse (toujours 3 comparaisons et 9 enregistrements de mémoire dans le pire des cas).
if a[0] < a[1]: if a[1] > a[2]: if a[0] < a[2]: temp = a[1] a[1] = a[2] a[2] = temp else: temp = a[0] a[0] = a[2] a[2] = a[1] a[1] = temp else: # do nothing else: if a[1] < a[2]: if a[0] < a[2]: temp = a[0] a[0] = a[1] a[1] = temp else: temp = a[0] a[0] = a[1] a[1] = a[2] a[2] = temp else: temp = a[0] a[0] = a[2] a[2] = temp
Je vais vous donner +1 pour ça, Adamax. Bien que ce soit des fesses laids à lire, la question a fait i> demander optimal et la vôtre semble satisfaire que :-)
Votre algorithme donne un résultat incorrect avec {2, 3, 1} matrice.
@ionree sûr, j'ai corrigé le code. Si vous jetez un coup d'œil à Le code d'origine , vous verrez que le chemin d'exécution finit par éteindre deux éléments pendant que chaque élément a être déplacé.
Légère optimisation: remplacement du premier << / code> Comparaison avec
= << / code> éviterait un échange inutile si
a [0] code> == A [1] `.
version légèrement plus efficace que le tri des bulles déroulées, pas optimal, mais toujours assez simple
Je ne peux pas croire que quelqu'un a voté cela. C'était à -1. Je viens de la monter et maintenant c'est à 0.
mai Ce graphique montrant un arbre de décision pour Tri de trois éléments aide:
p>
De quel livre est-ce?
Cela vient de "GRUNDLEGENDE ALGORITHMEN" ( www14.in.tum.de/~ga ) de Volker Heun - malheureusement en allemand seulement. Une figure très similaire peut être trouvée dans "Introduction aux algorithmes" de Cormen et al. ( MitPress.mit .edu / livres / introduction-algorithmes ).
Je savais que je l'ai vu quelque part ... Peut-être que c'est dans le livre de Sedgewick, aussi? Mais pour que quiconque se demandait, il est en effet dans les CLRS, sous "Tri de temps linéaire". Merci!
trié (a) code> avec mon pseudo
trié code> fonction qui trie en place :)
Beaucoup de doublons, par exemple Stackoverflow.com/questions/3319993/...
EASY:
int [] myarray = {6, 8, 17}; code> :)