2011-11-08 22 views
5

Creé este tipo de inserción para estructuras de datos y algoritmos hace aproximadamente un año. Estaba usando Visual Studio 2008 ahora estoy utilizando 2010. Quería usar el género en otra cosa pero cuando ejecuto el código ordena el número más alto como -898583932 o algo así. ¿Alguna idea de lo que podría estar causando eso? Aquí está mi códigoInsertion Sort Error

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

void insertionSort(int array[], int last){ 
    int hold; 
    int walker; 
    int current; 

    for (current = 1; current <= last; current++){ 
     hold = array[current]; 
     for (walker = current - 1; 
      walker >= 0 && hold < array[walker]; walker--){ 
        array[walker + 1] = array[walker]; 
      } 
      array[walker + 1] = hold; 
    } 
    return; 
} 

int main(int argc, char *argv[]) 
{ 
    int numbers[10]; 
    int i; 

    srand(time(NULL)); 
    for (i = 0; i < 10; i++){ 
     numbers[i] = rand() % 100; 
    } 
    printf("Unsorted Numbers\n-------- -------\n"); 
    for (i = 0; i < 10; i++){ 
     printf("%d,", numbers[i]); 
    } 
    insertionSort(numbers, 10); 
    printf("\nSorted Numbers\n-------- -------\n"); 
    for (i = 0; i < 10; i++){ 
     printf("%d,", numbers[i]); 
    } 
    system("PAUSE"); 
    return 0; 
} 
+2

Si desea ayudar a la fijación de su código a continuación, es probable que desee [SO], revisión de código es para la revisión del código de trabajo. –

+0

Duplicado de http://stackoverflow.com/questions/8045733/error-with-c-insertion-sort – Blastfurnace

Respuesta

5

Esa extraña número negativo grande probablemente tiene algo que ver con esto:

for (current = 1; current <= last; current++){ 
    hold = array[current]; 

Usted debe tener más cuidado con esos índices.

5

se encuentra el error en esta línea:

for (current = 1; current <= last; current++){