在图中查找密度最高的节点
本文关键字:节点 查找 | 更新日期: 2023-09-27 18:00:16
在我的程序中,Density表示表示连接到特定节点的节点数的计数。例如,如果某个节点的密度为3,则表明它连接到无向图中的其他3个节点。我想决定密度最高的节点。到目前为止,我正在做这样的事情:
public Node LeaderIs(List<Node> list)
{
for (int k = 0; k < list.Count; k++)
{
var i = YelloWPages.GetNode(k, list);
for (int l = 0; l < list.Count; l++)
{
var j = YelloWPages.GetNode(l, list);
if (Node.GetDensity(i) > Node.GetDensity(j))
{
Node Leadernode = i;
}
}
}
}
我有两个问题:
- 如果这是正确的?如果是,我应该从哪里归还利德诺
- 如果它不正确,我哪里出了问题,可以做什么实现来获得
Leadernode
回答您的问题:
1) 不,这不太正确,因为您永远不会返回值,也不需要内部循环。你不想对列表进行排序,你只需要最大值。
2) 您需要在方法的顶部定义Leadnode,在测试条件的中间设置它,并在方法的结尾返回它
public Node LeaderIs(List<Node> list)
{
Node Leadernode = null;
int LeadernodeDensity = 0;
for (int k = 0; k < list.Count; k++)
{
var i = YelloWPages.GetNode(k, list);
int iDensity = Node.GetDensity(i);
if ( iDensity > LeadernodeDensity)
{
Leadernode = i;
LeadernodeDensity = iDensity;
}
}
return Leadernode;
}
请参阅此处类似问题的答案,了解使用C#的更好的最大值算法。
LINQ:如何表演。对集合中所有对象的属性执行Max(),并返回具有最大值的对象