2011-11-08 43 views
5

Tôi đã tạo sắp xếp chèn này cho cấu trúc dữ liệu và thuật toán khoảng một năm trước. Tôi đã sử dụng visual studio 2008 bây giờ tôi đang sử dụng 2010. Tôi muốn sử dụng các loại trong cái gì khác, nhưng khi tôi chạy mã nó sắp xếp số lượng cao nhất là -898583932 hoặc một cái gì đó gần đó. Bất kỳ ý tưởng gì có thể gây ra điều đó? Đây là mã của tôiLỗi sắp xếp chèn

#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

Nếu bạn muốn giúp sửa lỗi trong code của bạn thì có thể bạn muốn [SO], Mã Xem lại là dành cho việc xem xét mã làm việc. –

+0

Bản sao của http://stackoverflow.com/questions/8045733/error-with-c-insertion-sort – Blastfurnace

Trả lời

5

Đó số âm lạ lớn có thể có cái gì để làm với điều này:

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

Bạn nên cẩn thận hơn với những chỉ số.

5

Bạn sẽ tìm thấy lỗi trên dòng này:

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