C语言 冒泡法对整数排序

想用冒泡法排序,但是没有实现,请问是哪里出了问题呢?


#include
main()
{
    int a[10];
    for(int i=0;i<10;++i){
        scanf("%d",&a[i]);
    } 
    for(int i=0;i<9;++i){
        for(int j=1;j<10;++j){
            if(a[i]>a[j]){
                int t;
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }
    for(int i=0;i<10;++i){
        printf("%d,",a[i]);
    }
} 

经过一趟排序后,最后一个数已经是最大值了,不用再参与排序,将内循环次数每次减少一次就行了。
例如:

#include <stdio.h>
int main()
{
    int arr[10] = { 0 };
    for (int i = 0; i < 10; ++i) {
        scanf("%d", &arr[i]);
    }
    int i = 0;
    int sz = sizeof(arr) / sizeof(arr[0]); //计算元素的个数
    for (i = 0; i < sz; i++)//这里确定趟数,为元素个数-1躺;
    {
        int j = 0;
        for (j = 0; j < sz - i - 1; j++)//确定对数,每经过一趟就-1对,且为趟数-1;
        {
            if (arr[j] > arr[j + 1])
            {
                int tmp = 0;
                tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
    for (i = 0; i < sz; i++)
    {
        printf("%d ", arr[i]);//打印出数组;
    }
    return 0;
}


#include<stdio.h>
main()
{
    int a[10];
    for(int i=0;i<10;++i){
        scanf("%d",&a[i]);
    } 
    for(int i=0;i<9;++i){
        for(int j= 0 ; j < 9 - i; j ++){
            if(a[j]>a[j + 1]){
                int t;
                t=a[j];
                a[j]=a[j + 1];
                a[j + 1]=t;
            }
        }
    }
    for(int i=0;i<10;++i){
        printf("%d,",a[i]);
    }
} 

img