一个长度为5的二维数组,找出里面最接近的五个数据 C++实现代码
时间: 2024-09-12 22:17:17 浏览: 47
要在一个长度为5的二维数组中找出最接近的五个数据,可以先假设第一个元素是最小值,然后遍历数组,更新这五个元素的最小值和最大值。这里是一个简单的C++实现:
```cpp
#include <vector>
#include <algorithm>
// 定义一个结构体存储数据及其索引
struct Data {
int value;
int index;
};
bool compare(Data a, Data b) {
return a.value < b.value; // 按照数值大小升序排列
}
std::vector<Data> findClosestFive(int arr[5][5], int n) {
std::vector<Data> closest Five;
// 初始化最接近的五个元素
for (int i = 0; i < 5 && i < n; ++i) {
closest.push_back({arr[i][0], i});
}
// 遍历数组,找到更接近的值
for (int i = 1; i < n; ++i) {
for (int j = 0; j < 5; ++j) {
if (abs(arr[i][j] - closest[j].value) < abs(arr[i][closest[4].index] - closest[4].value)) { // 更新值较大元素的位置
closest[4] = {arr[i][j], i};
}
}
sort(closest.begin(), closest.end(), compare); // 保持排序
}
return closest;
}
int main() {
int arr[5][5] = {{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}};
int n = sizeof(arr) / sizeof(arr[0]);
std::vector<Data> result = findClosestFive(arr, n);
for (const auto& data : result) {
std::cout << "Value: " << data.value << ", Index: " << data.index << '\n';
}
return 0;
}
```
这个程序首先将前五个元素视为最接近的,然后遍历剩余部分,如果发现某个元素比已选的第五个元素更接近,就替换它。最后返回包含最接近五个数据及其索引的数据结构。
阅读全文