求解释一下,到底是哪里出了问题啊

刚写了一段程序,功能是对一个数组里的值进行升序排序,但只是多了个大括号(在关于j的for循环那里)的区别,得到的结果完全不同,自己也没推出来问题在哪,感觉应该不会有那么大的区别啊。

问题相关代码

加大括号:
//ssort.c
#include

static void swap(int* a,int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}

extern void selection_sort(int array[], int len)
{
int i, j, min;
for (i = 0; i < len - 1; i++)
{
min = i;
for (j = i + 1; j < len; j++)
{
if (array[min] > array[j])
{
min = j;
}

        if (min != i)
        {
            swap(&array[i], &array[min]);
        }
    }
    
}

}

extern void print_array(int array[], int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d\t", array[i]);
}
}

//main.c
#include
#define LEN 10

void selection_sort(int array[], int len);
void print_array(int array[], int len);

int main()
{
int array[] = { 8,1,3,5,6,7,4,9,2,10 };
selection_sort(array, LEN);
print_array(array, LEN);
return 0;
}

不加大括号:
//ssort.c
#include

static void swap(int* a,int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}

extern void selection_sort(int array[], int len)
{
int i, j, min;
for (i = 0; i < len - 1; i++)
{
min = i;
for (j = i + 1; j < len; j++)

        if (array[min] > array[j])
        {
            min = j;
        }
        if (min != i)
        {
            swap(&array[i], &array[min]);
        }
    
}

}

extern void print_array(int array[], int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d\t", array[i]);
}
}

//main.c
#include
#define LEN 10

void selection_sort(int array[], int len);
void print_array(int array[], int len);

int main()
{
int array[] = { 8,1,3,5,6,7,4,9,2,10 };
selection_sort(array, LEN);
print_array(array, LEN);
return 0;
}

运行结果

加大括号:

img

不加大括号:

img

我尝试了一下逐步运行查看语句,但是看不到这个数组内数据的实时位置,脑子不够用,没推出来。

多了一个大括号语句结构都不一样了,重新写好缩进,就可以看到有很大变化

img


(下次贴代码请在点击后在三引号的范围里贴,这样大家才好帮你查看解决问题)