Możesz użyć większych wartości do wyświetlania, na przykład :
apple : 1 000 000
orange : 2 000 000
banana : 3 000 000
Teraz, jeśli chcę dodać potato
na pozycji 2 (n=2) biorę n (=> 2 :pomarańczowy) i (n-1)(=> 1 :jabłko) pozycję i dzielę je przez 2, aby otrzymać nową pozycję ziemniaka :
(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
Będzie to działać przez dość długi czas, a jeśli w pewnym momencie poczujesz, że wyczerpałeś ten schemat, nadal możesz pomnożyć wszystkie wartości przez 1000.
Równie dobrze możesz nadal używać niskich wartości (1, 2, 3, ...) i definiować ich typ jako DOUBLE
, dzięki czemu nigdy nie będą się ze sobą kolidować podczas dzielenia ich przez 2.
EDYTUJ: O umieszczaniu banana na pozycji 1:
Używając wzoru (n+(n-1))/2:
Tutaj n =1 (nowa pozycja).
Nasze dane to:
apple : 1 000 000
potato : 1 500 000
orange : 2 000 000
banana : 3 000 000
(1 000000+(0))/2
=500 000
Zamawiam 500 000 bananów :
**banana : 500 000**
apple : 1 000 000
potato : 1 500 000
orange : 2 000 000
Jeszcze inne rozwiązanie:utwórz pole tekstowe, które byłoby indeksatorem i zawierało wszystkie identyfikatory.
"1,2,3,4,5,6,7"
Teraz, jeśli chcę umieścić id elementu 8 między 3 a 4, muszę po prostu zamienić „,4” na „,8,4,”.
Chociaż znalezienie elementu o indeksie n jest bardziej skomplikowane pod względem obliczeniowym, osobiście skorzystam z pierwszego rozwiązania.