双向冒泡排序,帮我看一下为什么运行结果为0

#include<stdio.h>
typedef struct
{
int key;
}datatype;
void bubblesort(datatype a[],int n)
{int i,j,flag=1;
datatype temp;
for(i=1;i<n&&flag==1;i++)
{flag=0;
for(j=0;j<n-i;j++)
{

    if(a[j].key>a[j+1].key)
        
      {
    flag=1;
    temp=a[j];
    a[j]=a[j+1];
    a[j+1]=temp;
       }
    }
    for(j=n-i;j<i;j--)
    if(a[j].key>a[j+1].key)
        {flag=1;
        temp=a[j];
        a[j]=a[j+i];
        a[j+1]=temp;
        }
   }

}
int main()
{
datatype sxmp[7]={33,26,4,16,19,41};
int i,n;
bubblesort(sxmp,n);
for(i=0;i<7;i++);
printf("%d\n",sxmp[i].key);
return 0;
}