排序不知道哪错了,该怎么处理

排序不知道哪错了
#include <stdio.h>

int main(void)
{
long array[5]={5,4,3,2,1};
int i,j,key;

for(i=1;i<5;i++)
{
key=array[i];
j=i-1;
while(j>=0 && array[j]>key)
{
array[j+1]=array[j];
j--;
}
array[j]=key;

}
for(i=0;i<5;i++)
printf("%d",array[i]);
}

------解决方案--------------------
将array[j]=key;放到while循环里面去,修改之后:

    long array[5]={5,4,3,2,1};
    int i,j,key;
 
    for(i=1;i<5;i++)
    {
        key=array[i];
        j=i-1;
        while(j>=0 && array[j]>key)
        {
            array[j+1]=array[j];
    array[j]=key;
            j--;
        }  
    }
    for(i=0;i<5;i++)
    printf("%d",array[i]);