首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(N-1)+(N-2)+(N-3)+ ... + 1= N*(N-1)/2的证明是什么

(N-1)+(N-2)+(N-3)+ ... + 1= N*(N-1)/2的证明是什么
EN

Stack Overflow用户
提问于 2010-03-21 01:05:27
回答 8查看 116.2K关注 0票数 29

我从泡泡排序算法的数据结构书中得到了这个公式。

我知道我们是(n-1) * (n次),但为什么除以2?

有没有人能给我解释一下或者提供详细的证据。

谢谢

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-03-21 01:10:21

参见triangle numbers

票数 7
EN

Stack Overflow用户

发布于 2010-03-21 01:14:06

(N-1) + (N-2) +...+ 2 + 1是N-1个项目的总和。现在重新排序项目,这样,在第一个项目之后是最后一个,然后是第二个,然后是倒数第二个,即(N-1) + 1 + (N-2) + 2 +..。现在,您可以看到这些项的排序方式都等于N (N-1+1是N,N-2+2是N)。因为有N-1个项目,所以有(N-1)个这样的对(N-1)/2。所以你要把N(N-1)个/2相加,所以总值是N*(N-1)/2

票数 31
EN

Stack Overflow用户

发布于 2010-03-21 01:22:24

从三角形开始。

代码语言:javascript
复制
    *
   **
  ***
 ****

到目前为止代表了1+2+3+4。沿着一个维度把三角形切成两半。

代码语言:javascript
复制
     *
    **
  * **
 ** **

将较小的部分旋转180度,并将其粘贴在较大的部分的顶部...

代码语言:javascript
复制
    **
    * 

     *
    **
    **
    **

闭合间隙以获得矩形。

乍一看,只有当矩形的底部有偶数长度时才有效-但如果它有奇数长度,您只需将中间的柱子切成两半-它仍然适用于矩形一侧的两倍高(仍然是整数区域)的半个单位宽的条带。

无论三角形的底边是什么,矩形的宽度都是(base / 2),高度是(base + 1),这就是((base + 1) * base) / 2

然而,我的base是您的n-1,因为冒泡排序一次比较一对项,因此在第一个循环中只迭代(n-1)个位置。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2483918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档