1.4.16

1.4.16 #

解答 #

先将数组从小到大排序,再遍历一遍即可得到差距最小的两个数。

排序算法需要消耗 NlogN,具体见 MSDN:Array.Sort 方法 (Array)

代码 #

var a = new[] { 0.1, 0.3, 0.6, 0.8, 0 };
Array.Sort(a); // Nlog(N) 具体见 https://msdn.microsoft.com/zh-cn/library/6tf1f0bc(v=vs.110).aspx 备注部分
var minDiff = double.MaxValue;
double minA = 0;
double minB = 0;
for (var i = 0; i < a.Length - 1; i++) //N
{
    if (a[i + 1] - a[i] < minDiff)
    {
        minA = a[i];
        minB = a[i + 1];
        minDiff = a[i + 1] - a[i];
    }
}

Console.WriteLine($"Min Pair: {minA} {minB}, Min Value: {minDiff}");

另请参阅 #

MSDN-Array.Sort 方法 (Array)