用c++计算vector的中间值
时间: 2023-02-06 11:12:35 浏览: 498
关于C++vector
在C语言中,可以使用函数 `mean` 来计算向量的中位数。例如:
```c
#include <stdio.h>
#include <stdlib.h>
double mean(double *data, size_t n)
{
double sum = 0;
for (size_t i = 0; i < n; i++)
{
sum += data[i];
}
return sum / n;
}
int main(int argc, char *argv[])
{
double data[] = {1.0, 2.0, 3.0, 4.0, 5.0};
double m = mean(data, 5);
printf("mean = %f\n", m);
return 0;
}
```
输出结果为:
```
mean = 3.000000
```
注意,计算中位数的函数 `mean` 使用了指针 `data` 和元素数量 `n` 作为参数。这样可以直接传递数组的内存地址,而不需要将整个数组复制到函数内部。
此外,如果需要计算向量的中位数,则需要将向量排序,然后取中间的数。可以使用 C 语言的 `qsort` 函数来实现排序。
```c
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b)
{
double x = *(double *)a;
double y = *(double *)b;
if (x < y)
{
return -1;
}
else if (x > y)
{
return 1;
}
else
{
return 0;
}
}
double median(double *data, size_t n)
{
qsort(data, n, sizeof(double), compare);
if (n % 2 == 0)
{
return (data[n / 2] + data[n / 2 - 1]) / 2;
}
else
{
return data[n / 2];
}
}
int main(int argc, char *argv[])
{
double data[] = {1.0, 2.0, 3.0, 4.0, 5.0};
double m = median(data, 5);
printf("median = %f\n", m
阅读全文