计算最接近地球的k星

时间:2015-04-15 03:36:06

标签: c# arrays heapsort

考虑银河系的坐标系,其中地球位于(0; 0; 0)。将恒星模型化为点,并假设距离为光年。银河系由大约1012颗恒星组成,它们的坐标以逗号分隔值(CSV)格式存储在文件中 - 每行一行,每行四个字段,第一行对应一个ID,然后三个浮点数对应星级位置。 你如何计算最接近地球的k星?你只有几兆字节的RAM。

2 个答案:

答案 0 :(得分:0)

您可以完全跳过排序并使用Linq扩展方法:Min()

var distanceArray = new int[] {10, 2, 453, 134, 22, 78, 2424, 12, 
    5, 23232, 6442, 64, 99564, 1314, 20 };

int actual = distanceArray.Min();

int expected = 2;
Assert.AreEqual<int>(expected, actual);

答案 1 :(得分:0)

另一种方法是在不对其进行排序的情况下遍历数组,寻找最小的项目。当然,对于单个项目来说这很容易,对于'n'个项目来说稍微困难一些。随着'n'的增长,排序变得更加可取。

int[] distanceArray = new int[] { 10, 2, 453, 134, 22, 78, 2424, 12, 
    5, 23232, 6442, 64, 99564, 1314, 20 };

int actual = int.MaxValue;

foreach (int distance in distanceArray)
{
    if (distance < actual) actual = distance;
}

int expected = 2;
Assert.AreEqual<int>(expected, actual);