c语言选择法排序,求解决

选择法不能排序,不知道出错在哪,请告知
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include<stdio.h>
int main()
{
    int i,j,temp,n;
    printf("你要排列的数的个数:"),
    scanf("%d",&n);
    int a[n]; 
    for(i=0;i<n;i++)
    {
        printf("第%d个数:",i+1);
        scanf("%d",&a[i]); 
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(a[i]>a[j])
            {
            temp=a[j];
            a[i]=a[j];
            a[i]=temp;//将i与小值交换 
            }
        }
    }
    printf("排列好的顺序为:\n");
    for(i=0;i<n;i++)
    printf("%4d",&a[i]);
    return 0;
}


#include <stdio.h>
int main()
{
    int i, j, temp, n;
    printf("你要排列的数的个数:");
    scanf("%d", &n);
    int a[n];
    for (i = 0; i < n; i++)
    {
        printf("第%d个数:", i + 1);
        scanf("%d", &a[i]);
    }
    for (i = 0; i < n; i++)
    {
        int min = i;
        for (j = i + 1; j < n; j++)
        {
            if (a[min] > a[j])
                min = j;
        }
        if (i != min)
        {
            temp = a[i];
            a[i] = a[min];
            a[min] = temp;
        }
    }
    printf("排列好的顺序为:\n");
    for (i = 0; i < n; i++)
        printf("%4d", a[i]);
    return 0;
}