冒泡排序 c语言 数组不能按预想升序排列,只能左右颠倒

今天在vs编译器试着敲了c语言冒泡排序的代码,发现只能将数组的顺寻颠倒过来,并不能正常的按升序排列,麻烦热心人们帮我看看怎么回事
#define _CRT_SECURE_NO_WARNINGS 1;

#include<stdio.h>
#include<string.h>

void bubble_sort(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int j = 0;
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j] > arr[j + 1]);
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int arr1[] = {10,2,3,4,5,6,7,8,9,1};
int sz = sizeof(arr1) / sizeof(arr1[0]);
bubble_sort(arr1,sz);

int a = 0;
for (a = 0; a < sz;a++)
{
    printf("%d ", arr1[a]);
}
return 0;

}

img

我想要达到的结果:应该是数组排列为arr1[]={1,2,3,4,5,6,7,8,9,10}。希望有热心人帮我看看到底是哪一步除了问题

#define _CRT_SECURE_NO_WARNINGS 1;
#include<stdio.h>
#include<string.h>

void bubble_sort(int arr[], int sz)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        int j = 0;
        for (j = 0; j < sz - 1 - i; j++)
        {
            //没有进if语句,多敲了个;
            //if (arr[j] > arr[j + 1]);
            if (arr[j] > arr[j + 1])
            {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;        
            }
        }
    }
}
int main()
{
    int arr1[] = { 10,2,3,4,5,6,7,8,9,1 };

    int sz = sizeof(arr1) / sizeof(arr1[0]);
    bubble_sort(arr1, sz);

    int a = 0;
    for (a = 0; a < sz; a++)
    {
        printf("%d ", arr1[a]);
    }
    return 0;
}

img