我试着计算一个叫做中位数的矢量的中位数:

std::nth_element(median.begin(), median.begin() + median.size() / 2, median.end());

medianVal = median[median.size() / 2];

cout << "The median is " << medianVal << endl;

这很好用.但我需要在其原始向量中获得中值的位置.我怎么能这么快做到这一点?

解决方法:

我假设你不想重新订购原始容器.如果错了,有更简单的方法.

nth_element采用比较器.

所以首先在原始容器中创建一个迭代器向量,然后编写一个带有2个迭代器的比较器,对它们进行deference,amd比较结果.

template

auto median(C const& c){

using std::begin; using std::end;

auto start = begin(c);

auto finish = end(c);

using iterator = decltype(start);

std::vector working;

for(auto it = start; it != finish; ++it)

working.push_back(it);

if (working.empty())

return start;

std::nth_element(

begin(working), begin(working) + working.size() / 2, end(working),

[](iterator lhs, iterator rhs){

return *lhs < *rhs;

}

);

return *(begin(working) + working.size() / 2);

}

这确实依赖于一些C 14(自动返回类型推导),但是每个主要的编译器(可能除了icc?)现在都支持它.

它足够灵活,甚至可以处理C风格的数组,我认为它甚至适用于哨兵.

标签:median,c

来源: https://codeday.me/bug/20190727/1556041.html

c语言中位数怎么求,C计算中位数参考相关推荐

  1. 大数据中位数怎么运算_java 计算中位数的实现方法

    最近工作需要 要求把python的代码写成java版本,python中有一个np.median()求中位数的方法,java决定手写一个 先说说什么是中位数: 中位数就是中间的那个数, 如果一个集合是奇 ...

  2. c语言输入坐标求距离,计算两个经纬度之间距离的C语言代码

    // // main.c // Distance // // #include #include #define PI 3.1415926 #define EARTH_RADIUS 6378.137 ...

  3. c语言加减乘除计算程序,求一个计算加减乘除的C语言程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include int getOption (void); void getData (int* num1, int* num2); ...

  4. java中求中位数_java 计算中位数的实现方法

    最近工作需要 要求把python的代码写成java版本,python中有一个np.median()求中位数的方法,java决定手写一个 先说说什么是中位数: 中位数就是中间的那个数, 如果一个集合是奇 ...

  5. R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的计数个数、均值和中位数、使用funs函数指定函数列表

    R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的计数个数.均值和中位数.使用funs函数指定函数列表 目录

  6. R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的计数个数、均值和中位数、使用list函数指定函数列表并指定自定义函数名称

    R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的计数个数.均值和中位数.使用list函数指定函数列表并指定自定义函数名称 目录

  7. R语言dplyr包summarise_all函数计算dataframe数据中所有数值数据列的均值和中位数、使用sapply筛选数值数据列(Summarize all Numeric Variables

    R语言dplyr包summarise_all函数计算dataframe数据中所有数值数据列的均值和中位数.使用sapply筛选数值数据列(Summarize all Numeric Variables ...

  8. R语言dplyr包summarise_if函数计算dataframe数据中所有数值数据列的均值和中位数、基于条件进行数据汇总分析(Summarize all Numeric Variables)

    R语言dplyr包summarise_if函数计算dataframe数据中所有数值数据列的均值和中位数.基于条件进行数据汇总分析(Summarize all Numeric Variables) 目录

  9. R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的均值和中位数、指定na.rm参数配置删除缺失值

    R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的均值和中位数.指定na.rm参数配置删除缺失值(Summarize with Custom Fun ...

最新文章

  1. string数组怎么定义
  2. 认识计算机硬件观评课,观课听课评课评语
  3. Debian与《玩具总动员》
  4. 日本奥委会主席否认为争取奥运会主办权行贿
  5. Silverlight 开发入门1
  6. Linux中kill,pkill,killall和xkill命令汇总讲解
  7. [转载]详细解说STL排序(sort)------这篇博文在一道题上救了我o_0
  8. 665C. Simple Strings
  9. python基础语言法则_python语言基础3
  10. 星爷001正式开始写blog啦
  11. JS设计模式——12.装饰者模式
  12. Image合并添加文字内容
  13. python在类内部使用装饰器_python – 如何在类中使用装饰器
  14. 理解Iass Pass SasS三种云服务区别
  15. 红米k30pro刷机鸿蒙,红米k30pro最严重缺点_红米k30pro建不建议买
  16. sql查看mysql表结构_MySQL 查看表结构简单命令
  17. Secure Multiparty Computation (MPC)
  18. 弹跳机器人 桌游_「桌游推荐」我的机器人哪有这么厉害
  19. usnews美国大学计算机科学排名,最新!2019年USNews美国大学计算机专业排名
  20. The Annotated Diffusion Model(翻译)

热门文章

  1. H.264官方软件JM源代码简单分析-解码器ldecod(转载)
  2. N1-AI生成挑战赛#你想不到的猫,快来为你喜欢的作品投票吧!
  3. 服务器灰度部署和原理
  4. 树莓派连接电脑(两种方法)
  5. uniapp的uniapp navigateTo 点击无法跳转的问题
  6. mavennexus环境搭建
  7. 每日一篇系列---CSS3实现下雨动效
  8. Material Design控件使用(一)
  9. 来了!全球三个首次5G技术实现; 辽宁省完成5G投资36.4亿元; 中兴发布白皮书; 7月国内5G手机出货1391.1万...
  10. 零基础学习PS——Photoshop的167个技能