想用冒泡法让数组里的数从大到小输出 为什么这个输出的数都不对呢

#include<stdio.h>
int main()
{
int a[3]={1,2,3};
int t,j,i;
for(j=0;j<3;j++)
for(i=0;i<3-j;i++)
if(a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<3;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}

修改见注释,供参考:

#include<stdio.h>
int main()
{
   int a[3]={1,2,3};
   int t,j,i;
   for(j=0;j<3-1;j++)//修改  for(j=0;j<3;j++)
       for(i=0;i<3-j-1;i++)//修改  for(i=0;i<3-j;i++)
           if(a[i]<a[i+1])
           {
              t=a[i];
              a[i]=a[i+1];
              a[i+1]=t;
           }
   for(i=0;i<3;i++)
       printf("%3d",a[i]);
   printf("\n");

   return 0;
}