这是输入20个求,然后从大到小输出,有点看不懂其中的for循环的嵌套,有大佬帮忙解说一下程序吗

# define N 20
int main(void)
{
int i = 0;
int arr[N];
int k = 0;
int max=0;
int j = 0;
printf("请输入20个整数:\n");
for (i = 0; i < N; i++)
{
scanf_s("%d", &arr[i]);
printf("\n");
}
for (i = 0; i < N-1; i++)
{
k = i;
for(j=i+1;j<N;j++)
if (arr[i] <arr[j])
k = j;
max = arr[k];
arr[k] = arr[i];
arr[i] = max;
}
for(i=0;i<N;i++)
printf("%d\t",arr[i]);
printf("\n");
return 0;
}