J'essaie de créer un tri d'insertion en C. Nous avons utilisé le code suivant à l'école, mais cela ne fonctionne pas.insertion trier dans c, besoin de correction
#include <stdio.h>
#include <conio.h>
int main(int argc, char const *argv[])
{
int a[6] = {5,8,3,2,9,1};
int i,j, key;
int countArraySize = sizeof(a)/sizeof(int);
for (i = 0; i < countArraySize; ++i)
{
key = a[i];
j = i - 1;
while(j>=0 && key < a[j]) {
a[j+1] = a[j];
j--;
}
a[j+1] = key;
printf("%d\n", a[j+1]);
}
return 0;
}
Merci.
« il ne fonctionne pas » est presque jamais une description du problème adéquat. Si vous avez besoin d'aide, prenez le temps d'expliquer votre problème plus clairement. Spécifiquement, fournissez l'entrée, le résultat/résultat attendu et le résultat/résultat réel (les deux derniers sont manquants). Et avez-vous essayé de déboguer cela (en dehors de l'affichage sur SO)? Par exemple, en utilisant un débogueur? – kaylum
Je vais vous donner un indice: Votre 'printf' imprime chaque' clé' au point où elle est rencontrée dans le tableau d'entrée. Autrement dit, vous imprimez simplement les valeurs de tableau non triées. Comment pourriez-vous changer le code pour imprimer les valeurs triées à la place? – kaylum
Astuce: Imprimez les valeurs de 'j' et pensez aux indices négatifs. –