Можете да използвате по-големи стойности за показване, като например :
apple : 1 000 000
orange : 2 000 000
banana : 3 000 000
Сега, ако искам да добавя potato
в позиция 2 (n=2) вземам n (=> 2 :оранжево) и (n-1) (=> 1 :ябълка) позиция и ги разделям на 2, за да получа новата позиция на картофи :
(1 000 000 + 2 000 000) / 2
=1 500 000
apple : 1 000 000
**potato : 1 500 000**
orange : 2 000 000
banana : 3 000 000
Това ще работи доста дълго време и ако в даден момент почувствате, че сте изчерпали тази схема, все още можете да умножите всички стойности по 1000.
Можете също така да продължите да използвате ниска стойност (1, 2, 3, ...) и да дефинирате типа им като DOUBLE
, така че те никога няма да се сблъскат, когато ги разделят на 2.
РЕДАКТИРАНЕ: Относно поставянето на банан на позиция 1 :
Използване на формула (n+(n-1))/2:
Тук n =1 (нова позиция).
Нашите данни са:
apple : 1 000 000
potato : 1 500 000
orange : 2 000 000
banana : 3 000 000
(1 000 000+(0))/2
=500 000
Поръчвам 500 000 на банан :
**banana : 500 000**
apple : 1 000 000
potato : 1 500 000
orange : 2 000 000
Още едно решение:създайте текстово поле, което ще бъде индексатор и ще съдържа всички идентификатори.
„1,2,3,4,5,6,7“
Сега, ако искам да сложа идентификатор на елемент 8 между 3 и 4, просто трябва да заменя ",4", с ",8,4,".
Въпреки че е по-сложно от гледна точка на изчисленията да се намери елемент с индекс n, така че аз лично бих използвал първото решение.