数学。排序。 “ n *(n +1)/ 2”是否总是小于“ n * n”?

时间:2019-02-24 13:16:30

标签: c sorting math

请参见下面的代码。该代码按n *(n + 1)/ 2个迭代对数组进行排序。我从维基百科1 + 2 + 3 + 4 +...中选取了公式。无需证明它,让我们假设它可以正常工作。

3.0 + 5.0 / 2.0

This code at OnlineGDB

我的问题是,“ n *(n + 1)/ 2”小于“ n * n”是否总是正确吗?

2 个答案:

答案 0 :(得分:3)

假设n > 0。然后,如果n * (n + 1) / 2 < n * n为true,则(n + 1) / 2 < n也为true,因此n + 1 < 2 * n,因此n > 1。如果为(n > 0) AND (n > 1),则为n > 1

假设n < 0。然后,如果n * (n + 1) / 2 < n * n为true,则(n + 1) / 2 > n也为true,因此n + 1 > 2 * n,因此n < 1。如果为(n < 0) AND (n < 1),则为n < 0

这表示如果(n > 1) OR (n < 0),则为true。

答案 1 :(得分:2)

假设 n 是实数,并且 n <0或 n > 1。

n •( n +1)/ 2 < n 2 当且仅当存在一个正数 h ,使得 n •( n +1)/ 2 + h = n 2

所以 h 将是 n 2 - n •( n + 1)/ 2。这是积极的吗?它等于 n 2 / 2- n / 2。如果 n <0,则 n 2 / 2和 n / 2均为正,因此 h 是肯定的。如果 n > 1, n 2 / 2- n / 2 = n •( n -1)/ 2,而 n 和( n -1)/ 2均为正,所以 h < / em>为正。因此,对于 n <0或 n > 1, n •( n +1)/ 2 << em> n 2

另一方面,如果0≤ n ≤1,则我们有 h = n •( n −1)/ 2,我们可以看到 n 为正或零,而( n −1)/ 2为负或零,所以 h < / em>不是正数,因此 n •( n +1)/ 2≥ n 2 。< / p>