我的排序为什么不起作用


#include<stdio.h>

int main(){
    int n,c1=0,i,t,c2=0;
   scanf("%d",&n);
    int a[n];
    for( i=0;i<n;i++)
      scanf("%d",&a[i]);
 for( i=0;i<n;i++){
    if(a[i]>a[i+1])
        t=a[i];
    a[i]=a[i+1];
    a[i+1]=t;
    int min=a[0],max=a[n-3];
    for( i=0;i<n;i++){
        if(min==a[i])c1++;
        if(max==a[i])c2++;
    }
   
    printf("%d %d\n%d %d",min,c1,max,c2);}
    return 0;
}

in:
10
86 75 233 888 666 75 886 888 75 666
out:
75 3
888 2

供参考:

#include<stdio.h>
int a[20000];  
int main() 
{
    int n, c1 = 0, i, t, c2 = 0, j;
    scanf("%d", &n);
    //int a[n];
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    for (j = 0; j < n - 1; j++) {
        for (i = 0; i < n - 1 - j; i++) {

            if (a[i] > a[i + 1])
            {
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
        }
    }

    int min = a[0], max = a[n - 1];  //max = a[n - 3]
    for (i = 0; i < n; i++) {
        if (min == a[i])c1++;
        if (max == a[i])c2++;
    }
    printf("%d %d\n%d %d", min, c1, max, c2);
    //}
    return 0;
}

11行if语句后面加括号,把你用来交换顺序的三个语句包含进去,因为你不加括号的话,if语句就只对他下面的一条语句起作用。

img

img