U kunt grotere waarden gebruiken voor weergave, zoals bijvoorbeeld:
apple : 1 000 000
orange : 2 000 000
banana : 3 000 000
Als ik nu potato
wil toevoegen in positie 2 (n=2) neem ik n (=> 2 :oranje) en (n-1)(=> 1 :appel) positie en deel ze door 2 om de nieuwe aardappelpositie te krijgen:
(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
Dit zal behoorlijk lang werken, en als je op een gegeven moment het gevoel hebt dat je dit schema hebt uitgeput, kun je nog steeds alle waarden met 1000 vermenigvuldigen.
Je kunt net zo goed een lage waarde (1, 2, 3, ...) blijven gebruiken en hun type definiëren als DOUBLE
, zodat ze nooit zullen botsen wanneer ze worden gedeeld door 2.
BEWERK: Over het plaatsen van banaan in positie 1:
Met formule (n+(n-1))/2:
Hier n =1 (nieuwe positie).
Onze gegevens zijn:
apple : 1 000 000
potato : 1 500 000
orange : 2 000 000
banana : 3 000 000
(1 000000+(0))/2
=500 000
Ik geef de bestelling 500 000 aan banaan :
**banana : 500 000**
apple : 1 000 000
potato : 1 500 000
orange : 2 000 000
Nog een andere oplossing:maak een tekstveld dat een indexer zou zijn en alle id's zou bevatten.
"1,2,3,4,5,6,7"
Als ik element id 8 tussen 3 en 4 wil plaatsen, moet ik gewoon ",4" vervangen door ",8,4,".
Hoewel het qua rekenkracht ingewikkelder is om een element op index n te vinden, zou ik persoonlijk de eerste oplossing gebruiken.