Stel dat je set-operaties als union en intersection zo efficient mogelijk wilt uitvoeren, welke datastructuur zou je dan moeten gebruiken? Een gesorteerde lijst (in de vorm van een gebalanceerde binaire boom of skiplist), of een op hashing gebaseerde datastructuur (meestal Hashtable of hashmap genoemd)?
Ik kan hier zelf geen eenduidig antwoord op bedenken. Ik weet dat een element opzoeken in een hashtable een O(1) operatie is, terwijl dit voor een gesorteerde lijst O(log n) is. Echter, een union of intersection tussen twee gesorteerde lijsten kan in O(n) geimplementeerd worden.
Voor een hashmap zou je n keer een O(1) lookup moeten doen, dus dat zou ook O(n) zijn, lijkt me.
Welke van de twee datastructuren zou het best performen?
Ik kan hier zelf geen eenduidig antwoord op bedenken. Ik weet dat een element opzoeken in een hashtable een O(1) operatie is, terwijl dit voor een gesorteerde lijst O(log n) is. Echter, een union of intersection tussen twee gesorteerde lijsten kan in O(n) geimplementeerd worden.
Voor een hashmap zou je n keer een O(1) lookup moeten doen, dus dat zou ook O(n) zijn, lijkt me.
Welke van de twee datastructuren zou het best performen?