c语言,自己编了个直接插入排序,可是却输出不了正确的结果,找不到哪里错了,求大神指点

#include
#include
void Straightinsertionsort(int a[])
{
int i,j,k;
int b[10]={0};
b[0]=a[0];
for(i=1;i {
for(j=i-2;j>=0;j--)
{
if(a[i]>b[j])
{
for(k=i-2;k>j;k--)
{
b[k+1]=b[k];
}
b[j+1]=a[i];
}
}
}
for(i=0;i<10;i++)
{
printf("%d",b[i]);
}
}
int main()
{
int a[10]={0};
int i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
Straightinsertionsort(a);
return 0;

}

 for(i = 0; i < len; i ++){
            tmp = a[i];
            for(j = i - 1; j >= 0; j --){
                if(tmp < a[j]){
                  //小于a[j],则a[j]向后移动
                    a[j + 1] = a[j];    
                }else{
                  //若tmp>=a[j],则说明找到a[i]的插入位置,跳出循环
                    break;
                }
            }
            a[j + 1] = tmp;//j之后的位置就是a[i]在有序中的位置
        }

lz你的代码不完整,第一个for循环的i这里,而且i从1开始,下面的j=i-2不就有问题了么