请问我哪错了,这样写不对吗?要怎么改正才可以得到想要的结果

7-4 简化的插入排序
本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。

输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。

输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。

输入样例:
5
1 2 4 5 7
3
输出样例:
1 2 3 4 5 7

#include 
#define N 11

int main() {
    int n, i, x, j, k;
    scanf("%d", &n);
    int arr[n];
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    scanf("%d", &x);
    for (i = 0; i > n - 1; i++) {
        if (x < arr[i]) {
            k = i;
            arr[i + 1] = arr[i];
            break;
        }
        for (j = n - 2; j >= k; j--) {
            arr[j + 1] = arr[j];
            arr[k] = x;
            printf("%d", arr[j]);
        }
        printf("%d", arr[i]);
        return 0;
    }
}

供参考:

#include<stdio.h>
const int N = 1000;
int main()
{
    int n, m, i;
    int a[N];
    scanf("%d", &n); //n有序数列个数
    for (i = 0; i < n; i++) // 输入n个有序数列元素
        scanf("%d", &a[i]);

    scanf("%d", &m); //输入 m: 待插入的数

    if (m > a[n - 1]) {   // 插入操作
        a[n] = m;
    }
    else {
        for (i = n; m < a[i - 1] && i > 0; i--) {
            a[i] = a[i - 1];
        }
        a[i] = m;
    }

    for (i = 0; i < n + 1; i++)//输出 插入后的有序数列
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}

img

代码


int n, i, x, j, k;
    scanf("%d", &n);
    int arr[n+1];  //定义必须要多一位
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    scanf("%d", &x);
    //因为已经是排序好的数组
    for(int i=0;i<n;++i)
    {
        if(arr[i]>=x)
        {
            //移动位置
            for(int j=n;j>i;--j)
            {
                arr[j]=arr[j-1];
            }
            arr[i]=x;
            break;
        }
    }

    for(int i=0;i<n+1;++i)
    {
        printf("%d  ",arr[i]);
    }

    return 0;