25.计算中值
时间:2020-07-25
本文章向大家介绍25.计算中值,主要包括25.计算中值使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一. 问题
1. 定义:中值使得一个序列中一半元素在它之前,一半元素在它之后。
2. 问题:求出一个序列的中值。
二. 思路
我们有一个序列,需要知道序列元素的个数。当有奇数个元素时,中值自然就是最中间的数字;当有偶数个元素时,需要将最中间的两个元素相加,求得的平均值就是序列的中值。
序列的元素可以是任何类型的(比如整数,浮点数等),我们需要先将这个序列排序,再进行上述运算。如果不进行排序,那么这个中值没有意义。
举个栗子:
1.有一个序列 1, 2, 3, 4, 5,包含5个元素,它的中值是3。
2.有一个序列1, 2, 3, 4, 5, 6, 包含6个元素,它的中值是中间元素3和4相加的平均值。
我们要特别注意下标的计算,因为下标从0开始。
三. 代码实现
1 double get_mid_value(const vector<int> &values) { 2 int total_val = values.size(); 3 double mid_value = 0.0; 4 if (total_val % 2 == 0) { 5 mid_value = static_cast<double>((values[total_val / 2] + values[total_val / 2 - 1])) / 2; 6 } else { 7 mid_value = values[total_val / 2]; 8 } 9 10 return mid_value; 11 }
主函数测试如下:
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 6 int main() { 7 vector<int> ages; 8 int current_age = 0; 9 cout << "Enter age : "; 10 while (cin >> current_age) { 11 ages.push_back(current_age); 12 cout << "Enter age : "; 13 } 14 15 sort(ages.begin(), ages.end()); 16 double mid_age = get_mid_value(ages); 17 cout << "Middle age = " << mid_age << endl; 18 19 return 0; 20 }
代码中有几处需要说明:
1. 函数接受一个常量引用,因为它不修改序列内容。
2. 假设序列元素为整数类型,但是中值仍然有可能是浮点数,所以应该返回一个浮点类型。
3. 注意函数中对于下标的计算。
4. 代码中为了简洁没有使用模板,没有进行错误处理,但是大家应该知道这个函数应该能够处理不同种类的数据。
原文地址:https://www.cnblogs.com/Hello-Nolan/p/13378460.html
- ASP.NET MVC是如何运行的(4): Action的执行
- ASP.NET MVC是如何运行的[1]: 建立在“伪”MVC框架上的Web应用
- 在Entity Framework中使用存储过程(五):如何通过存储过程维护多对多关系?
- ASP.NET MVC下基于异常处理的完整解决方案
- 不到40行代码构建正则表达式引擎
- 随便写一篇文章
- Java 10新特性解密
- Android组件化框架项目详解
- ScheduledThreadPoolExecutor原理探究
- TensorFlow下载与安装
- Kotlin基础之内联函数
- 不服来战,看Kotlin如何完爆Java
- 前缀、中缀、后缀表达式
- iOS WebDriverAgent 环境搭建
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python字符串
- MYSQL logstash 同步数据到es的几种方案对比以及每种方案数据丢失原因分析。
- 手写“SpringBoot”:几十行代码基于Netty搭建一个 HTTP Server
- SpringCloud Sleuth 分布式请求链路追踪
- StarUML 使用方法
- nacos 服务注册与配置中心
- sql语句中(+)的作用
- 1.7 C++运算符
- 探花交友_搭建开发环境
- 编程体系结构(04):JavaIO流文件管理
- Hadoop框架:HDFS简介与Shell管理命令
- OpenCV的Mat类型以及基本函数使用
- Hadoop框架:HDFS读写机制与API详解
- 编程体系结构(06):Java面向对象
- RabbitMQ在分布式系统中的应用