用C语言写一个归一化算法
时间: 2023-05-22 18:05:50 浏览: 76
归一化算法是将一组数据映射到0到1的范围内。以下是一个用C语言实现的归一化算法:
```c
#include <stdio.h>
void normalize(double *arr, int size) {
double max = arr[0];
double min = arr[0];
int i;
// 找到数组中的最大值和最小值
for (i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
// 归一化数组中的每个元素
for (i = 0; i < size; i++) {
arr[i] = (arr[i] - min) / (max - min);
}
}
int main() {
double arr[] = {2.0, 4.0, 6.0, 8.0, 10.0};
int size = sizeof(arr) / sizeof(arr[0]);
int i;
printf("原始数组:");
for (i = 0; i < size; i++) {
printf("%.2f ", arr[i]);
}
normalize(arr, size);
printf("\n归一化数组:");
for (i = 0; i < size; i++) {
printf("%.2f ", arr[i]);
}
return 0;
}
```
这个归一化函数接受一个包含数据的数组和数组的大小作为输入。它首先找到数组中的最大值和最小值,然后用下面的公式将每个元素归一化:
```c
arr[i] = (arr[i] - min) / (max - min);
```
最后,函数返回归一化后的数组。在这个示例中,我们打印出原始数组和归一化数组来验证算法的正确性。