请参见下面的代码。该代码按n *(n + 1)/ 2个迭代对数组进行排序。我从维基百科1 + 2 + 3 + 4 +...中选取了公式。无需证明它,让我们假设它可以正常工作。
3.0 + 5.0 / 2.0
我的问题是,“ n *(n + 1)/ 2”小于“ n * n”是否总是正确吗?
答案 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>