你的if没有加括号,导致只有第一句在if里面,后面2句无论如何都会执行
然而temp又没有赋初值,结果它给a[i-1]赋值成随机数了
有用请采纳
#include<stdio.h>
void mpSort(int a[], int n); // 声明函数: a为待排序数组, n为元素个数
int main(){
int n;
scanf("%d", &n);
int a[n];
for(int i = 0;i < n; i++)
scanf("%d", &a[i]);
mpSort(a, n);
for(int i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
void mpSort(int a[], int n){
int temp;
for(int i = 0; i < n - 1; i++){
for (int j = 0; j < n - i - 1; j++){
if(a[j] > a[j + 1]){
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}