Начать с треугольником ...
*
**
***
****
, представляющий 1 + 2 + 3 + 4 до сих пор. Разрежьте треугольник пополам по одному измерению ...
*
**
* **
** **
Поверните меньшую часть на 180 градусов, и вставить его на вершине большей части ...
**
*
*
**
**
**
Закройте зазор, чтобы получить прямоугольник.
На первый взгляд это работает только в том случае, если основание прямоугольника имеет четную длину, но если оно имеет нечетную длину, вы просто сокращаете средний столбец пополам - он по-прежнему работает с полуобъемной шириной в два раза, (по-прежнему целая область) на одной стороне вашего прямоугольника.
Независимо от основания треугольника ширина вашего прямоугольника (base/2)
и высота (base + 1)
, что дает ((base + 1) * base)/2
.
Однако мой base
является вашим n-1
, так как сортировка пузырьков сравнивает пару элементов за раз и поэтому выполняет итерацию только (n-1) позиций для первого цикла.
http://mathoverflow.net/ –
... предназначен только для математических вопросов на уровне исследований. – rjh
@PascalThivent: этот вопрос будет закрыт в течение нескольких секунд на mathoverflow. – sepp2k