Triple Eye Industrieel Ingenieur Informatica Algemeen Intranet Derde jaar Algoritmen Algoritmen
AlgoI (09-10): reeks 7

Algoritmen I (2009-2010)

reeks 7: indirect sorteren

Als de kost om T te kopiëren groot is (t.o.v. pakweg een int), dan loont het de moeite om een collectie van elementen T indirect te sorteren. Dat betekent dat men niet de elementen zelf maar "handles" naar de elementen sorteert. Deze handles kunnen indexen of pointers zijn die verwijzen naar de oorspronkelijke element. Er wordt ondersteld dat de kost om elementen te vergelijken, om handles te vergelijken en om handles te kopiëren relatief klein is.

Achteraf moet men de oorspronkelijke elementen nog op hun juiste plaats zetten (zoals aangegeven door de handles). En dat blijkt in lineaire tijd (O(N)) te kunnen! Kun je een algoritme verzinnen dat dit verwezenlijkt?

Voor de aardigheid definiëren we ons algoritme in een namespace IndirectSort. De functie mag dan gewoon sort heten:

	sort(vector<T> &v);
Breng alles onder in "indirectsort.h". Gebruik geen andere libraries dan vector. Om de handles te sorteren mag je std::sort gebruiken.

indirectsorttest.h is een testprogramma dat gebruik maakt van unittest.h en fakeint.h om na te gaan of je algoritme daadwerkelijk sorteert en niet teveel elementen verplaatst.


R. Stoop 12/09/2003

Welkom | Hogeschool Gent | INWE | Studentenserver | Docentenserver | Intranet