Partage
  • Partager sur Facebook
  • Partager sur Twitter

Découvrez le fonctionnement des algorithmes

dernier qui Question 7

    13 janvier 2023 à 11:01:29

    Il me semble qu'il y a une erreur dans la question et la réponse. 

    • Appeler la fonction de manière récursive sur  (gauche, milieu)  et  (milieu + 1, arrière)

    "arrière" est la mauvaise variable elle devrait être "droite" a la place 

    • Continuer tant que la variable  gauche >= droite

    je pense que ceci devrais être changer a "Continuer jusqu’à ce que la variable gauche >= droite" ou "Continuer tant que la variable  gauche < droite"

    Et du coup la réponse 1 est fausse et la 3 serait la bonne. Voici un exemple de code que j'ai trouver pour résoudre le problème:

    Comme vous pouvez voir, dans cette version ils ont écrit:

    if (l < r) pour l'appel récursive, du coup l’arrêt récursive est dans la condition inverse  l >= r.

    Ou peut être que je me trompe. Si quelqu'un pourrais me confirmer ou m'expliquer. 


    Merci. 



    • Partager sur Facebook
    • Partager sur Twitter

    Fabien Duncan

      6 mars 2023 à 15:44:34

      J'avais la même interrogation...

      Je bug aussi sur le tri par insertion :

      tableau[j-1] ← tableau[j]

      pour moi c'est plutôt :

      tableau[j] ← tableau[j-1] sinon on perd l'information de tableau[j-1]

      C'est d'ailleurs qui est indiqué sur https://fr.wikipedia.org/wiki/Tri_par_insertion

      • Partager sur Facebook
      • Partager sur Twitter
        6 mars 2023 à 17:42:29

        Voici l'implémentation en C du tri par insertion:
         
        void triInsertion(int tableau[], int taille) {
            for(int i=1;i<taille;i++) {
                int minimum=tableau[i];
                int j;
                for(j=i; j>0 && minimum<tableau[j-1]; j--) tableau[j]=tableau[j-1];
                tableau[j]=minimum;
            }
        }
        • Partager sur Facebook
        • Partager sur Twitter

        Le Tout est souvent plus grand que la somme de ses parties.

          7 mars 2023 à 16:47:29

          PierrotLeFou a écrit:

          Voici l'implémentation en C du tri par insertion:
           
          void triInsertion(int tableau[], int taille) {
              for(int i=1;i<taille;i++) {
                  int minimum=tableau[i];
                  int j;
                  for(j=i; j>0 && minimum<tableau[j-1]; j--) tableau[j]=tableau[j-1];
                  tableau[j]=minimum;
              }
          }

          Donc on est bien d'accord 

          dans "tableau[j]=tableau[j-1] " on balance tableau[j-1] dans tableau [j] alors que "tableau[j-1] ← tableau[j]" c'est le contraire !

          • Partager sur Facebook
          • Partager sur Twitter
            7 mars 2023 à 17:25:57

            Tout-à-fait d'accord. :)
            L'idée est de tout décaler vers le "bas" (vers la fin, et non le début).
            C'est un algorithme de complexité en O(n²). Mais c'est le plus rapide des tris de cette complexité car les compilateurs optimisent ce décalage d'une position.
            Et les actions étant locales, c'est mieux pour les performances si on regarde l'accès à la cache du processeur.
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              22 mars 2023 à 11:38:11

              Bonjour,

              Je suis actuellement l'étape Communiquer avec l'ordinateur (Découvrez le fonctionnement des algorithmes). Je me demande s'il n'y a pas une erreur sur l'exo suivant

              Consigne Labyrinthe

              Première étape : Algorithme de déplacement

              Pouvez-vous me dire si c'est bien une erreur ou si c'est moi qui n'ai pas compris quelque chose.

              On devrait avoir score : 50-25 au lieu de 25-25 


              Merci pour vos retours

              • Partager sur Facebook
              • Partager sur Twitter

              Découvrez le fonctionnement des algorithmes

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown