C#自定义按距离

时间:2016-01-29 15:51:37

标签: c# sorting icomparer

我正在尝试使用IComparer对列表进行排序,我的列表中有大约20,000个项目。第一个约100个和最后100个项目已排序,但中心不是。我不确定我做错了什么。附件是执行排序的代码部分。

class myclass:me
{
    private void mysort()
    {
       // Sort the data
       DistComparer dc = new DistComparer();
       st.Sort(dc);
    }
}

class DistComparer : IComparer<Tower>
{

    public int Compare(st x, st y)
    {
        double dist1 = getDistance(new PointF(45.0f, -80f), new PointF(x.Lat, x.Long));
        double dist2 = getDistance(new PointF(45.0f, -80f), new PointF(y.Lat, y.Long));
        if (dist1 > dist2)
            return 1;
        else if (dist1 == dist2)
            return 0;
        else
            return -1;
    }

    private static double getDistance(PointF pt1, PointF pt2)
    {
        return Math.Sqrt(Math.Pow((pt1.X - pt2.X), 2) + Math.Pow((pt1.Y - pt2.Y), 2));
    }
}

}

0 个答案:

没有答案