数组从小到大怎么排啊,我这个不对吗

案例是:输入4-2-8,从小到大输出2-4-8,可是我怎么变成2-8-4了啊,大佬们我这个代码哪儿错了
#include<stdio.h>

2
int main()
3
{
4
int c,i,j,a[12];
5

6
for(i=0;i<3;i++){
7
scanf("%d",&a[i]);
8
}
9
for(i=0;i<3;i++){
10
for(j=1;j<3;j++){
11
if(a[i]>a[j]){
12
c=a[i];
13
a[i]=a[j];
14
a[j]=c;
15
}
16
}
17
}printf("%d->%d->%d",a[0],a[1],a[2]);
18
return 0;
19
}

j应该从i+1开始循环,不是1,i不能小于j 否则j=2,i=1时 a[i] > a[j] 比较又换回来了

#include <stdio.h>
int main()
{
    int c, i, j, a[12];

    for (i = 0; i < 3; i++)
    {
        scanf("%d", &a[i]);
    }
    for (i = 0; i < 3-1; i++) //i 只循环到长度-1即可
    {
        for (j = i+1; j < 3; j++) //j应该从i+1开始循环,不是1,i不能小于j 否则j=2,i=1时  a[i] > a[j] 比较又换回来了

        {
            if (a[i] > a[j])
            {
                c = a[i];
                a[i] = a[j];
                a[j] = c;
            }
        }
    }
    printf("%d->%d->%d", a[0], a[1], a[2]);
    return 0;
}

img

如有帮助,望采纳!谢谢!

for(i=0;i<2;i++){
  for(j=0;j<2-i;j++){
    if(a[j]>a[j+1]){
      c=a[j];
      a[j]=a[j+1];
      a[j+1]=c;
    }
  }
}
for(i=0;i<3;i++){
for(j=i+1;j<3;j++){   //这里是i+1,不是1,因为i的值在变啊
if(a[i]>a[j]){
c=a[i];
a[i]=a[j];
a[j]=c;
}