计算两个整数列表之间的距离

Rey*_*neh 7 c# algorithm list coordinates

我正在使用C#,我有两个list<AACoordinate>,其中这些列表中的每个元素用x,y和z表示空间中的3D点.

 class AACoordinate
    {
        public  int ResiNumber { get; set; }
        public double x { get; set; }
        public double y { get; set; }
        public double z { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

每个列表可以包含2000个或更多点,我的目的是将list1的每个点与list2的所有点进行比较,如果距离小于特定的数字,我会记录它.目前我使用foreach将list1的每个元素与list2的所有元素进行比较.由于点数的原因,这很慢.你有什么建议让它快速吗?

我的循环是:

 foreach (var resiSet in Program.atomList1)
        {
            foreach (var res in Program.atomList2)
            {
                var dis = EuclideanDistance(resiSet, res);
                if (dis < 5)
                    temp1.Add(resiSet.ResiNumber); 
            }
        }
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

Bur*_*imi 0

您可以使用并行库,在其中可以找到Parallel.ForEach并行示例

  • 并行处理充其量只能提供线性加速。他的算法是二次的。 (2认同)