我是另外建立一個同樣大小的array2, 初始值為0。 然後把array1 中的元素由小到大從左到右放入array2 中 再找出中位數。
////code////
float array1[10]={12.3 , 13.5 , 22.6 , 65.4 , 0 , 0 , 0 , 4.4 , 0 , 21};
float array2[10]={0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0};
/// 將 array1 由小排到大放到 array2 中
int non_O_count=0;
int max_index=-1;
float median_num=0;
for (int i=0; i<10 0="" array1="" array2="" element="" for="" i="" if="" int="" j="" k="" max_index="" non_o_count="">j ; k--) array2[k]=array2[k-1];//較大的element 往右平移
array2[j]=array1[i];
max_index++;
break;
}
}
if (j > max_index) array2[++max_index]=array1[i];//比現存所有element大,從最右插入
}
}
/// 計算中位數 ///
if (non_O_count != 0)
if (non_O_count%2 != 0)
median_num=array2[(int)(non_O_count/2.0+0.5)-1];
else
median_num=(array2[non_O_count/2-1] + array2[non_O_count/2] ) / 2;
10>
結果如下
