2011-11-08 3 views
5

약 1 년 전에 데이터 구조 및 알고리즘에 대해이 삽입 정렬을 만들었습니다. 나는 Visual Studio 2008을 사용하여 2010을 사용하고 있습니다. 다른 것을 사용하고 싶었지만 코드를 실행할 때 가장 높은 숫자가 -898583932 또는 그와 비슷한 것으로 정렬되었습니다. 어떤 아이디어가 그 원인일까요?삽입 정렬 오류

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

당신은 그 지수에 더 조심해야한다 : 여기 내 코드 이상하게 큰 음수 아마이 함께 할 수있는 뭔가가

#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

을 [SO], 코드 검토는 코드를 작업의 검토를위한 것입니다. –

+0

중복 된 http://stackoverflow.com/questions/8045733/error-with-c-insertion-sort – Blastfurnace

답변

5

당신은이 라인에서 오류가 발견 할 것이다 : 당신이 그때는 아마 원하는 코드를 수정 도움이 필요한 경우

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