2011-11-08 7 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++){