数组“冒泡排序”,求教各位,该如何解决

数组“冒泡排序”,求教各位
编译器没有报错,到输出结果是错的,请求指教,谢谢!

#include<stdio.h>

void sort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
for(j=1+i;j<n-i;j++)
  if(a[j]<a[j+1])
  {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}

int main()
{
int a[5],i;
printf("请输入5个数:\n");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
sort(a,5);
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\n");
}

------解决方案--------------------
C/C++ code

#include<stdio.h>

void sort(int a[],int n)
{
    int i,j,k,t;
    for(i=0;i<n;i++)
        for(j=0; j < n- i;j++)   // j 要从 0 开始
            if(j + 1 < n && a[j] < a[j+1])  // 当i = 0 时 a[j+1]数组溢出了
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t; 
            }
}

int main()
{
    int a[5],i;
    printf("请输入5个数:\n");
    for(i=0;i<5;i++)
    {
        scanf("%d",&a[i]);
    }
    sort(a,5);
    for(i=0;i<5;i++)
        printf("%d ",a[i]);
    printf("\n");
}

------解决方案--------------------
C/C++ code

#include<stdio.h>

void sort(int a[],int n)
{
    int i,j,temp;
    for(i=0;i<n-1;++i)
        for(j=0;j<n-i-1;++j)
           if(a[j]<a[j+1])
           {
               temp=a[j];
               a[j]=a[j+1];
               a[j+1]=temp;    
           };
}

void main()
{
    int a[5],i;
    printf("请输入5个数:\n");

    for(i=0;i<5;i++)
    {
        scanf("%d",&a[i]);
    }
    sort(a,5); 
    for(i=0;i<5;i++)
        printf("%d ",a[i]);
    printf("\n");
}

------解决方案--------------------
探讨

C/C++ code

#include<stdio.h>

void sort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n;i++)
for(j=0; j < n- i;j++) // j 要从 0 开始
if(j + 1 < n &amp;&amp; a[j] < a[j+1]) // 当……