c语言的选择排序,我想使代码最多交换n-1次

选择排序,我想使代码最多交换n-1次,不知道为什么无法实现正确的交换

img

img

#include 

int main() {
    int n;
    scanf("%d", &n);
    int a[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    int t;
    for (int i = 0; i < n-1; i++) {
        int max = i;
        for (int j = i + 1; j < n; j++) {
            if (a[j] > a[i]) {
                max = j;
            }
        }
        if (max != i) {
            t = a[max];
            a[max] = a[i];
            a[i] = t;
        }
    }
    for (int i = 0; i < n; i++) {
        printf("%d", a[i]);
        if(i!=n-1) printf(" ");
    }

}

这里要改一下:

img


如有帮助,欢迎采纳哈!