Es lässt vermuten, dass du verschiedene Variablen hast, die als Namen das Item und als Wert die Position haben.
Du müsstest es genau andersrum machen, so dass die Variable "ItemPosi1" einen Wert hat, der die ItemID angibt. "ItemPosi1 = 6" heißt dann, dass an erster Stelle das Item mit der ID 6 steht (zB. Antidote). Somit würde Bubble Sort komplett funktionieren, wenn man es richtig umstellt.
Das Ganze hat sogar noch den Vorteil, dass du nur so viele "ItemPosiX"-Variablen brauchst, wie du maximal Items aufnehmen kannst, auch wenn es theoretisch 1000 verschiedene Items gibt.
Dieser Vorteil tritt aber nur auf, wenn du nicht alle Items unsortiert in die ItemPosi-Liste kopieren müsstests, was bei Bubble Sort leider der Fall ist. Denn man kann nur das tauschen, was schon existiert. Aber die ItemPosis sind ja am Anfang noch leer...
Deswegen würde ich ein anderes Verfahren benutzen: Strait Insertion.
...Wer Fehler findet, bitte melden.
...Wer Verständnis-Fragen hat, genau nachhaken.
..und, ach ja: Der Doppel-Pointer ist schon richtig so (ItemPosi-->ItemID-->Anzahl)