C语言排列大小有错误,搞不懂各位看一下

int main()
{
int arr[10];
int i = 0;
int j = 0;
int temp = 0;

for (i;i<10;i++)
{
    scanf("%d",&arr[i]);
    
}
for (j;j<10-1;j++)
{
    if (arr[j] > arr[j + 1])
    {
    temp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = temp;
    }


}

for (i = 0;i<10;i++)
{
    printf("%d\t",arr[i]);

}


return 0;

}

你这只有一层for循环哇

for (i = 0; i < 9;i ++)  //冒泡排序十个数,只需要9趟
    {
        for (j = 0; j < 9 - i; j++)    //9-i是因为每一趟就会少一个数比较
        {
            if (arr[j] > arr[j+1])//这是升序排法,前一个数和后一个数比较,如果前数大则与后一个数换位置
            {
                tem = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tem;
                
            }
        }
    }

排序用双循环

for(i=0;i<9;i++)
for (j=0;j<9-i;j++)
{
    if (arr[j] > arr[j + 1])
    {
    temp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = temp;
    }
 
 
}