怎么解释这个程序输出的结果,不是普通的解释要心得。

#include <stdio.h>
int main() {
int i,j,t;
int l[]={55,9,22,5,33,11};
for(i=0;i<4;i++){
printf("6 i=%d \n",i);
for(j=i+1;j<5;j++){
printf("8 j=%d \n",j);
if(l[j]<l[i]){
printf("10 l[%d]<l[%d] \n",j,i);
printf("11 j=%d i=%d l[j]=%d l[i]=%d \n",j,i,l[j],l[i]);
t=l[j];
l[j]=l[i];
l[i]=t;
printf("15 j=%d i=%d l[j]=%d l[i]=%d \n",j,i,l[j],l[i]);}
else
printf("17 l[%d]>=l[%d] l[j]=%d l[i]=%d \n",j,i,l[j],l[i]);}
printf("18 l[0]=%d l[1]=%d l[2]=%d l[3]=%d l[4]=%d l[5]=%d \n",l[0],l[1],l[2],l[3],l[4],l[5]);
}
return 0;
}

应该是要排序,每次输出的数组,大的元素都往后移了