我是另外建立一個同樣大小的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>
結果如下