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