一维数组先进行排序再插入一个数重新排序

定义了一个长度为11的数组,先输入10个数排序,再输入一个数插入其中进行排序。
但是会出现随机数,求各位指点

供参考:

#include<stdio.h>
const int N = 11;
int main()
{
    int n = 10, x, i, j;
    int a[N];
    scanf("%d", &n); //输入 n
    for (i = 0; i < n; i++) // 输入n个数组元素
         scanf("%d", &a[i]);
 
    for (i = n - 1;i > 0; i--){ //降序排序
        for (j = 0;j < i; j++){
            if (a[j] < a[j+1])
                x = a[j], a[j] = a[j+1], a[j+1] = x;
        }
    }
 
    scanf("%d", &x); //输入 x: 待插入的数
 
    if (x < a[n - 1]){   // 插入操作
          a[n] = x;
    }
    else{
          for (i = n; x > a[i - 1] && i > 0; i--) {
                a[i] = a[i - 1];
          }
          a[i] = x;
    }
 
    for (i = 0; i < n + 1; i++)//输出 插入后的有序数列
          printf("%4d", a[i]);
    printf("\n");
    return 0;
}