たとえば、次のように、より大きな値を表示に使用できます:
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 000000+(0))/ 2
=500 000
私はバナナに500000を注文します:
**banana : 500 000**
apple : 1 000 000
potato : 1 500 000
orange : 2 000 000
さらに別の解決策:インデクサーとなり、すべてのIDを含むテキストフィールドを作成します。
「1,2,3,4,5,6,7」
ここで、要素ID 8を3と4の間に置きたい場合は、「、4」を「、8,4」に置き換えるだけです。
インデックスnの要素を見つけることは計算の面でより複雑ですが、私は個人的に最初のソリューションを使用します。