插入排序错误

时间:2011-11-08 04:41:56

标签: c

我在大约一年前为数据结构和算法创建了这种插入排序。我正在使用visual studio 2008,现在我正在使用2010.我想在其他东西中使用排序但是当我运行代码时,它将最高的数字排序为-898583932或接近它的东西。可能导致这种情况的任何想法?这是我的代码

#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 个答案:

答案 0 :(得分:5)

这个奇怪的大负数可能与此有关:

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

你应该对这些指数更加小心。

答案 1 :(得分:5)

您将在此行中找到错误:

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