Size: a a a

2021 July 22

ДК

Денис Клименко... in RubyRush.ru
тоже вариант, я думаю если делать односвязный список, то нужно обновить не 2 а 3 записи. Сама запись которую переноси, ту которая находится в месте вставки но ниже, и которая находится после переносимой записи, если двусвязный то 5 записей обновляем
источник

PK

Pavel Kleimenov in RubyRush.ru
можно смотреть только в 1 сторону
источник

ДК

Денис Клименко... in RubyRush.ru
вариант со связаным списком более выигрышный, если мы хотить сразу взять много подряд идущих записей и куда то перенести их вместе
источник

PK

Pavel Kleimenov in RubyRush.ru
грубо говоря, хеш, где ключ - ид записи, значение - предыдущая записть
источник

PK

Pavel Kleimenov in RubyRush.ru
правда в данном случае при построении списка юзеров нужно идти с конца
источник

PK

Pavel Kleimenov in RubyRush.ru
если нужно с начала, то можно смотреть не на предыдущую, а на следующую
источник

PK

Pavel Kleimenov in RubyRush.ru
удобно если из миллиона записей нужно отрисовать 21 и 10 после нее
источник

Э

Эдем in RubyRush.ru
Для этого в awesome_nested_set есть колонка rgt, которая проиндексирована :)
источник

PK

Pavel Kleimenov in RubyRush.ru
значит полезный гем)
источник

ДК

Денис Клименко... in RubyRush.ru
ты имеешь ввиду, что для каждой записи храним ссылку на следующий элемент? как это сделано в обычных списках, которые например в C, Delphi на указателях делают?
источник

PK

Pavel Kleimenov in RubyRush.ru
что-то вроди того
источник

ДК

Денис Клименко... in RubyRush.ru
там обычно голову списка хранят например в переменой head
источник

PK

Pavel Kleimenov in RubyRush.ru
может есть и по элегантней способы, это первое что в голову пришло
источник

ДК

Денис Клименко... in RubyRush.ru
источник

PK

Pavel Kleimenov in RubyRush.ru
правда в даном случае обновлять прийдется 3 обьекта, а не 2
источник

PK

Pavel Kleimenov in RubyRush.ru
1.обьект который в данный момент ссылается на переносимый обьект, он будет теперь хранить ссылку которая была у переносимого обьекта
2. сам обьект переноса, который будет хранить ссылку того объекта на который ссылался обьект из пункта 3 до переноса
3. обьект который после переноса является предыдущим для переносимого обьекта и ссылается на обьект из пункта 2
источник

ДК

Денис Клименко... in RubyRush.ru
ну да, как я писал, что 3 объекта обновляем, а в случае, если двусвязный список то 5 объектов.
источник

PK

Pavel Kleimenov in RubyRush.ru
есть еще вариант использовать масив
источник

PK

Pavel Kleimenov in RubyRush.ru
тогда добавление/удалением/переносом(смена индекса) будет сортировка)
источник

PK

Pavel Kleimenov in RubyRush.ru
но тут нужно быть орукатным с ограничениями массива)
источник