c - 求 10 个数字的中位数(未排序)?

标签 c median

我不能使用数组。 我必须只使用一个变量。 并计算中位数。 我使用以下代码输入 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/

相关文章:

bash - 如何在 bash 中判断一个值是偶数还是奇数?

Python/Pandas Dataframe 将 0 替换为中值

c - 使用 strncpy 时堆栈和堆的奇怪行为

c - 通用矩阵 : how to pass a type in a function argument

c - 用 C 语言执行 Luhn 算法 - 有错误的代码

c - 如何将命令嵌入到作为内置命令的 bash 中?

mysql - 这是一个计算 mysql 表中值中位数的代码,我需要一些专家来解释命令执行的顺序

python - 数据帧中的多个计数和中值

java - 寻找 3 个值的中位数的通用方法

c - 如何最大限度地提高此 C 代码的性能?