本文整理汇总了C#中Heap.remove方法的典型用法代码示例。如果您正苦于以下问题:C# Heap.remove方法的具体用法?C# Heap.remove怎么用?C# Heap.remove使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Heap
的用法示例。
在下文中一共展示了Heap.remove方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
static void Main(string[] args)
{
Heap h = new Heap();
Random r = new Random();
int i, x;
for (i = 0; i < 10; ++i)
{
x = r.Next(99);
Console.WriteLine("\nInserting {0} ", x);
h.insert(x);
h.display();
}
x = h.remove();
Console.WriteLine("\nRemoving {0} ", x);
h.display();
Console.ReadKey();
}
示例2: MST_Prim
// Prim's algorithm to compute MST
// Code most of this yourself
int[] MST_Prim( int s)
{
int v;
int wgt = 0;
int wgt_sum = 0;
int[] dist, parent, hPos;
dist = new int[V + 1];
parent = new int[V + 1];
hPos = new int[V + 1];
Node t;
for (v = 0; v <= V; v++)
{
dist[v] = int.MaxValue;
parent[v] = 0;
hPos[v] = 0;
}
Heap pq = new Heap(V, dist, hPos);
pq.insert(s);
dist[s] = 0;
while ( ! pq.isEmpty())
{
v = pq.remove();
Console.WriteLine("Adding to MST edge {0}--({1})--{2}", toChar(parent[v]), dist[v], toChar(v));
if (v != s)
{
wgt_sum += dist[v];
}
dist[v] = 0;
for (t= adj[v]; t.data != 0; t = t.next)
{
wgt = t.wgt;
if (t.wgt < dist[t.data])
{
dist[t.data] = t.wgt;
parent[t.data] = v;
if (hPos[t.data] == 0)
{
pq.insert(t.data);
}
else
{
pq.siftUp(hPos[t.data]);
}
}
}
}
Console.Write("\n\nWeight of MST = {0}\n",wgt_sum);
return parent;
}
示例3: MST_Prim
// Prim's algorithm to compute MST
// Code most of this yourself
int[] MST_Prim(int s)
{
int v;
int wgt_sum = 0;
int[] dist, parent, hPos;
Node t;
//the distance from node to node
dist = new int[V + 1];
//the parent node
parent = new int[V + 1];
//current heap position
hPos = new int[V + 1];
// initialising parent and position to zero, and dist to the max value
for (v = 1; v <= V; v++)
{
dist[v] = int.MaxValue;
parent[v] = 0;
hPos[v] = 0;
}
Heap heap = new Heap(V + 1, dist, hPos);
heap.insert(s);
dist[s] = 0;
while (!heap.isEmpty())
{
v = heap.remove();
//calculates the sum of the weights
wgt_sum += dist[v];
dist[v] = -dist[v];
Console.Write("\nAdding edge {0}--({1})--{2}", toChar(parent[v]), dist[v], toChar(v));
for (t = adj[v]; t != z; t = t.next)
{
if (t.wgt < dist[t.vert])
{
dist[t.vert] = t.wgt;
parent[t.vert] = v;
//If the vertex is empty, insert next vertex
if (hPos[t.vert] == 0)
{
heap.insert(t.vert);
}
else //Else call sift up
{
heap.siftUp(hPos[t.vert]);
}
}
}
}
Console.Write("\n\nWeight = {0}\n", wgt_sum);
return parent;
}