C语言冒泡排序出错,样例已正确

img


帮看下哪里出错了,样例正确但仍然75分。还没找出出错点。(这个用的冒泡排序)

改动处见注释,供参考:

#include <stdio.h>
int main()
{
    int a, i, j, b;
    int tmp;
    scanf("%d %d", &a, &b);
    int f[4] = { (a + b) * (a + b),(a - b) * (a - b),a * a + b * b,a * a - b * b };
    for (i = 0; i < 3; i++) //(i=0;i<4;i++)
    {
        for (j = 0; j < 3 - i; j++) //(j=1;j<3-i;j++)
        {
            if (f[j] < f[j + 1])  //(f[j]>f[i])
            {
                tmp = f[j];
                f[j] = f[j + 1]; //f[i]=f[j];
                f[j + 1] = tmp;  //f[j]=tmp;
            }
        }
    }
    printf("%d %d", f[0], f[3]);
    return 0;
}

交换那个位置错了。

temp=f[j];
f[j]=f[i];
f[i]=temp;

循环条件一眼错