VS实现:有一个数组为m_P[i],随机存放(m_aNodes[m_aElems[i+1].node1].x,m_aNodes[m_aElems[i+1].node1].y)坐标下对应的数值,按照坐标m_aNodes[m_aElems[i+1].node1].x从小到大排列并依次输出对应的m_P[i]
时间: 2023-12-13 21:03:31 浏览: 42
可以按照以下步骤实现:
1. 获取数组的大小,存储在变量size中。
2. 定义一个结构体Node,包含x、y和val三个成员变量,用于保存每个元素的信息。
3. 创建一个Node类型的数组nodes,大小为size。
4. 遍历原始数组m_P,将每个元素的x、y和val分别存储到对应的nodes[i]中。
5. 使用STL的sort函数对nodes数组进行排序,排序规则为按照x从小到大排序。
6. 遍历排序后的nodes数组,依次输出每个元素的val值即可。
下面是完整的代码示例:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX_SIZE = 100;
struct Node {
int x, y, val;
};
int main() {
int m_P[MAX_SIZE] = {0}; // 原始数组
int size = sizeof(m_P) / sizeof(m_P[0]);
// 填充原始数组
for (int i = 0; i < size; i++) {
m_P[i] = rand() % 100;
}
// 定义节点数组
Node nodes[MAX_SIZE] = {0};
// 填充节点数组
for (int i = 0; i < size; i++) {
nodes[i].x = rand() % 100;
nodes[i].y = rand() % 100;
nodes[i].val = m_P[i];
}
// 按照x从小到大排序
sort(nodes, nodes + size, [](Node a, Node b) { return a.x < b.x; });
// 输出排序后的val值
for (int i = 0; i < size; i++) {
cout << nodes[i].val << " ";
}
return 0;
}
```
阅读全文