|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace KruskalAlgorithm
{
class Edge : IComparable
{
#region Members
Vertex v1, v2;
int nCost;
System.Drawing.Point pStringPosition;
#endregion
#region Properties
public Vertex V1
{
get
{
return v1;
}
}
public Vertex V2
{
get
{
return v2;
}
}
public int Cost
{
get
{
return nCost;
}
}
public System.Drawing.Point StringPosition
{
get
{
return pStringPosition;
}
}
#endregion
public Edge(Vertex v1, Vertex v2, int nCost, System.Drawing.Point pStringPosition)
{
this.v1 = v1;
this.v2 = v2;
this.nCost = nCost;
this.pStringPosition = pStringPosition;
}
#region IComparable Members
public int CompareTo(object obj)
{
Edge e = (Edge)obj;
return this.nCost.CompareTo(e.nCost);
}
#endregion
internal static void QuickSort(List<Edge> m_lstEdgesInitial, int nLeft, int nRight)
{
int i, j, x;
i = nLeft; j = nRight;
x = m_lstEdgesInitial[(nLeft + nRight) / 2].Cost;
do
{
while ((m_lstEdgesInitial[i].Cost < x) && (i < nRight)) i++;
while ((x < m_lstEdgesInitial[j].Cost) && (j > nLeft)) j--;
if (i <= j)
{
Edge y = m_lstEdgesInitial[i];
m_lstEdgesInitial[i] = m_lstEdgesInitial[j];
m_lstEdgesInitial[j] = y;
i++; j--;
}
} while (i <= j);
if (nLeft < j) QuickSort(m_lstEdgesInitial, nLeft, j);
if (i < nRight) QuickSort(m_lstEdgesInitial, i, nRight);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Enthusiastic programmer/researcher, passionate to learn new technologies, interested in problem solving, data structures, algorithms, AI, machine learning and nlp.
Amateur guitarist/ keyboardist, squash player.