冒泡排序,数组中没有0,为什么输出的结果却有0?

#include
int main(void)
{ int n[4]={5,3,1,4};
int i,j,temp;
for(j=0;j<4;j++)
{for(i=0;i<=4;i++)
{if(n[i]>n[i+1])
{temp=n[i+1];
n[i+1]=n[i];
n[i]=temp;}
printf("%d ",n[i]);
}
printf("\n");}}

数组中没有0但结果却出现了0
求问是什么情况

img

for(j=0;j<3;j++)
{for(i=0;i<3-j;i++)

冒泡排序写错了,第一个for循环条件改为j<3,第二个for循环条件改为i<3-j