你的程序逻辑性有点乱,第一个if语句把前三个数的较小数变为下标为二的数,第二个又把后三个数的较大数放到二,这样并不能保证【2】就是中间数。建议用冒泡排序从小到大,然后直接输出mid[2]
你的逻辑是有问题的,中位数并不是你这么定义的,你的局部满足判断不代表全局满足。
代码并没有对mid[2]进行处理,只需将两个for中的判断都带上‘=’。
for(i=0;i<=2;i++)
for(m=4;m>=2;m--)
for(i = 1; i < 5; i++){
for(j = 0; j < 5; j++){
if(mid[ j ] > mid[ j+ 1 ]){
int temp = mid[j];
mid[j] = mid[j + 1];
mid[ j + 1 ] = temp;
}
}
}
return mid[ 2 ];