Было бы хорошо увидеть тесты производительности (время, память) при различных любьемах данных. Так же не мешало бы менять констистентность данных. А то вроде звучит круто, но интересно, насколко выгодно это на практике.
Как-нибудь сделаю тестирование, самому интересно. Но если смотреть наглядно, то этому алгоритму требуется один запрос на запись к базе данных.
2
4
<<< один запрос на запись
8
16
Результат
2
4
6
8
15
По сравнению с алгоритмом, который свопит между собой записи, требуется значительно меньше операций на запись. Пример:
4 + обновить
5 + обновить
<<< добавить новую запись
6
7
Результат
3
4
5
6
7
На реальных данных, например при пользовательской сортировке 100 статей контента такой сложности не нужно =). Я когда начинал это делать это осознавал. Просто хотелось создать быстрый алгоритм.