我在大约一年前为数据结构和算法创建了这种插入排序。我正在使用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;
}
答案 0 :(得分:5)
这个奇怪的大负数可能与此有关:
for (current = 1; current <= last; current++){
hold = array[current];
你应该对这些指数更加小心。
答案 1 :(得分:5)
您将在此行中找到错误:
for (current = 1; current <= last; current++){