在进行六个整数用冒泡排序法从小到大排序时,将比大小抽象出来后却出现错误

在进行六个整数用冒泡排序法从小到大排序时,将比大小抽象出来后却出现错误,这是怎么回事呢?

img

img

并且如果变成升序的话需要怎么变呢,比如当flag=1时为升序,flag=0时为降序,这种变法又应该怎么变呢?

修改如下,供参考:

#include <stdio.h>
void BubbleSort(int a[], int n, int flag)
{
    int i, j, t;
    for (j = n - 1; j > 0; j--)
    {
        for (i = 0; i < j; i++)
        {
            if (a[i] > a[i + 1] && flag || a[i] < a[i + 1] && !flag)
            {
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
        }
    }
}
int main()
{
    int b[6] = { 2,1,5,4,6,3 }, i;

    BubbleSort(b, 6, 1);
    for (i = 0; i < 6; i++)
        printf("%d ", b[i]);
    printf("\n");

    BubbleSort(b, 6, 0);
    for (i = 0; i < 6; i++)
        printf("%d ", b[i]);
    return 0;
}