【数据结构+插入排序】输出错误


int insort(int arr[],int n)
{
    int j;
    for(int i=0;i<n-1;i++)
    {
    
        int x=arr[i];
        for(j=i;j>=0;j--)
        {
            if(x<arr[j])
            {
                arr[j+1]=arr[j];}
            else break;
        }
        arr[j+1]=x;
    }
}

结果输出全是数组最后一个数
请问有人知道这是为什么吗

void InsertSort(int *arr,int len)//插入排序默认步长为1,使用于小量级序列
{
    int temp = 0;
    int i = 0,j = 0;
    for(i = 1;i < len;i++){//第一个循环,插入排序是从第二个元素开始排序的,所以此处的i = 1
        if(arr[i] < arr[i - 1]){//限定条件:后面的元素小于前面的元素
            temp = arr[i];//利用临时变量保存后面的元素
            for(j = i - 1;j >= 0 && arr[j] > temp;j--){//这层循环是为了检查前面已经排序好的元素,循环执行的条件就是j下标不会低于0下标且前面已经排序好的元素出现了比临时变量更大的元素。
                arr[j + 1] = arr[j];//将前面已经排序好的元素统一向后迁移一位
            }
            arr[j + 1] = temp;//将temp中存放的值赋值给需要插入的位置上
        }
    }
}