选择排序在 C 中设置错误的值

Selection Sort setting wrong values in C

新程序员来了! 我正在实施选择排序,使用最大变量而不是通常的最小值,但我仍然想从最低到最高排序。 下面的代码对列表进行了完美排序,除了第一个值是一个非常大的负数... 关于我可以修复以使其正确排序的任何提示?

void selection(int Array[], int size) {
   int i, j, max, temp;
   for (i = 0; i < size-1; i++) {
     max = i;
       for (j = i+1; j <= size; j++) {
          if ( Array[j] < Array[max] )
             max = j;
       }
       temp = Array[max];
       Array[max] = Array[i];
       Array[i] = temp;
   }
}
for(j = i+1; j<=size; j++)

这一行是你的问题。您正在访问数组末尾的一个,这将是未定义的行为,并且通常会给您带来奇怪的值。将条件更改为 j < size.

在上面的代码行中,我可以看到您正在为数组使用基于 0 的索引,因此当您引用 Array[size] 或 Array[size+1] 时,这会抛出垃圾值, 您应该将内部循环替换为

for (j = i+1; j < size; j++)