Je fais un tri d'insertion c et ça marche bien, sauf qu'après le tri le premier nombre est toujours un nombre négatif bizarre et le programme commet une erreur.Erreur avec le type d'insertion c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void insertionSort(int list[], int last){
int hold;
int walker;
int current;
int count;
count = 0;
for (current = 1; current <= last; current++){
hold = list[current];
for (walker = current - 1;
walker >= 0 && hold < list[walker]; walker--){
list[walker + 1] = list[walker];
}
list [walker + 1] = hold;
count++;
}
printf("\n\nHow many passes to sort?\n%d\n\n", count);
return;
}
int main(int argc, char *argv[])
{
int numbers[100];
int i;
srand(time(NULL));
for (i = 0; i < 100; i++){
numbers[i] = rand() % 100;
}
printf("Unsorted Numbers\n-------- -------\n");
for (i = 0; i < 100; i++){
printf("%d,", numbers[i]);
}
insertionSort(numbers, 100);
printf("\nSorted Numbers\n-------- -------\n");
for (i = 0; i < 100; i++){
printf("%d,", numbers[i]);
}
system("PAUSE");
return 0;
}
fait encore après que je le change – shinjuo
est-ce que tu as traversé le reste de ton genre? Par exemple, marcheur = courant - 1; sera -1 lorsque le courant est 0, et votre boucle interne ne sera jamais accessible. –
peu importe ce que je semble changer, il dit pile autour de la variable «numéros» est corrompu – shinjuo