我不能使用数组。 我必须只使用一个变量。 并计算中位数。 我使用以下代码输入 10 个(未排序)
Printf("enter 10 nos");
for(i=0;i<=10;i++)
scanf("%d",&a);
我尝试过,但只能找到最小值和最大值。但没有找到中间的值。
最佳答案
这并不容易,因为在没有事先排序的情况下一次遍历就可以做到这一点,但它是可以完成的。
您需要一种计算运行中位数的方法。
一种方法是使用顺序统计树。请参阅http://pine.cs.yale.edu/pinewiki/OrderStatisticsTree 。这可能就是您的老师正在谈论的单一变量。但在 C 中强制转换为单个变量并不容易。
但这并不是获取中位数统计数据的明智方法。正常的路线是构建一个代表分位数函数的插值器并使用它来提取中位数。
关于c - 求 10 个数字的中位数(未排序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246237/