Какие существуют библиотеки или алгоритмы генерации индексов для сортировки по-порядку

Silentland

Новичок
Пример:
В базе хранится массив

id| sortIndex
A | 1
B | 2
C | 3
D | 4

Допустим, мы поменяли в нем позицию элемента D. Стало:

id| sortIndex
A | 1
D | 2
B | 3
C | 4

Мы перестраиваем индексы всех элементов и передаем их на сервер. Или передаем только изменившийся элемент, а сервер сам все перестраивает. Проблема этого способа в том, что в базе будут изменены все элементы.

Можно сделать по-другому, например, так:

id| sortIndex
A | 1
D | 1,5
B | 2
C | 3

Тут мы вычисляем новый индекс как среднее арифметическое от индекса соседей. Соответственно в базе меняется только один элемент.

Вконтакте для аудиозаписей, вообще, использует не индексы, а ссылки на последующий/предыдущий элементы. Правда, сама сортировка в этом случае будет тяжеловесной (вместо отображения по возрастанию придется бегать по связанному списку).

В общем, кто какие решения знает?
 

AnrDaemon

Продвинутый новичок
Не обязательно LL сортировке быть тяжеловесной.
Они вообще могут хранить плейлисты как одно поле в JSON.
Всё зависит от постановки вопроса.
 

Silentland

Новичок
Что такое LL сортировка?

Вообще, задача — сделать универсальный механизм сортировки для админки. А это списки из 20 элементов и из 2000 и больше. Естественно, везде пагинация. С другой стороны сортировка — достаточно редкая операция.
 

AnrDaemon

Продвинутый новичок
Linked List.

Если это редкая операция, то реализовывай как угодно. Даже если ты будешь пол-часа сортировать, на фоне недель работы это будет ничтожное время.
 
Сверху