2017-02-04 5 views
-1

Ceci est ma première question sur le débordement de la pile. Je viens de commencer mon voyage dans le monde de la programmation à travers CS50. Mon code pour le tri par insertion en C est un peu différent de ce que suggérait le pseudocode de l'instructeur. Je souhaite juste savoir si le code suivant est correct et comment puis-je le rendre meilleur? Merci beaucoup.Ma mise en œuvre de l'insertion est-elle correcte?

int arr[6] = {23, 42, 4, 16, 8, 15}; 

for (int i = 1; i < 6; i++)   // Iterating over the unsorted portion of array. 
{ 
    int element = arr[i];   // This is the first element of the unsorted portion. 
    int temp = -1; 
    for(int j = i-1; j >= 0 && element < arr[j]; j--) // Iterating over the unsorted portion of array from right to left. 
    { 
     arr[j+1] = arr[j]; 
     temp = j; 
    } 

    if(temp != -1)     // If temp does not change, the element is already sorted. 
    { 
     arr[temp] = element; 
    } 
} 
+0

@JonathanLeffler lol merci pour la réponse de toute façon! – PseudoAficionado

Répondre

2

Félicitations, votre code ne fonctionne pas. La première façon de voir ceci est de mettre ce code dans une fonction, comme main(), et d'imprimer chaque élément dans l'ordre après avoir exécuté l'algorithme. Si le résultat n'est PAS ce que vous attendiez, alors cela ne fonctionne certainement pas, cependant, le contraire n'est pas vrai. Mais si vous passez le premier essai, vous devriez commencer à tester votre code par rapport à d'autres cas, en particulier les cas de coin.

Une autre option utile ici est l'utilisation de GDB, un débogueur qui peut afficher la totalité du tableau à chaque étape de votre code, en particulier celui implémenté sur l'EDI CS50, ce qui est vraiment très agréable à regarder.

En outre, challenges de HackerRank sur insertion sort pourrait vous aider à apprendre cela. Sinon, bonne chance pour votre cours, j'espère que vous apprécierez!

+0

Merci mon pote! va certainement le vérifier. Et ouais ce débogueur est gentil! – PseudoAficionado