Ключ сортировки для пользовательского упорядочения и замены элементов с записью O (1) - PullRequest
0 голосов
/ 06 июля 2019

Я реализую табличное представление на iOS и хотел попросить у сообщества предложения о том, как оптимально структурировать мои данные, чтобы позволить пользователю настраивать ячейки табличного представления и сохранять ключ сортировки - I.E. перетащите их в разные места и сохраните порядок.

Насколько я могу обдумать проблему (и Google тоже), переупорядочение двух ячеек потребовало бы переписать целое число порядка во всех ячейках ниже перемещаемого элемента (или куда он перемещался, если перемещался вверх). выше в списке).

Например, у меня есть предметы:

(пункт 1, индекс 1), (пункт 2, индекс 2), (пункт 3, индекс 3), (пункт 4, индекс 4), (пункт 5, индекс 5)

Чтобы переместить элемент 5 в начало списка, результирующие данные должны выглядеть следующим образом, т.е. Перепишите индекс для всех пяти пунктов.

(элемент 5, индекс 1), (элемент 1, индекс 2), (элемент 2, индекс 3), (элемент 3, индекс 4), (элемент 4, индекс 5)

Конечно, я мог бы хранить индексы в памяти и переписывать их только тогда, когда пользователь закончил или покинул представление, однако для меня это похоже на запах кода, поскольку операция по перемещению одного элемента имела бы среднее значение O (n / 2) == O (n) операций.

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

Спасибо за любые предложения, отзывы и т. Д.

...