esetleg hash-sel?
fogsz egy hash-t, edesmindegy, mi, mondjuk legyen egy HashMap.
HashMap<elem,array*> map = new HashMap<elem,array*>;
int osztalyok = 0;
for (index:elem in vector):
if map.hasElem(elem):
map[elem].push(index)
else:
map[elem] = new array<int>(index);
osztalyok+=1;
return (osztalyok, map)
Ez egy gyakorlati megvalositas, igazabol te egy - optimalis esetben - n db. ordo(1)-es kulcskeresest vegzel el, ill. k. db. beillesztest (most ennek a koltsege azert fugg k es a hashtabla meretenek viszonyatol)
Lehet,hogy ennel van gyorsabb, sokminden fugg a konkret adat kardinalitasatol (azaz k-tol, ill. annak nagysagrendjetol), a hash algoritmustol, lehet, hogy egy masik indexelesi eljarast kell alkalmazni, de a rendezest en soknak erzem, remelem,annal azert ez gyorsabb realis esetekben.