wie schnittmenge zweier wertebereiche ermitteln?
-
hallo,
sitze vor einem problem, das sich auf die schnelle nicht(von mir) lösen lässt.
schreibe gerade an einem algorithmus, in dem ich jetzt die schnittmenge zweier zahlenbereiche ermitteln muss, bzw. ich muss eigentlich nur wissen, ob eine oder mehrere werte des einen wertebereichs im anderen vorkommen.beispiel:
bereich 1 bereich 2 ergebnis ------------------------------------- 5-8 8 ja 1-2 2-3 ja 3-5 6-8 nein
es soll eine möglichst performante lösung sein, das ist wichtig. also z.b. über for-schleifen beide bereiche vergleichen könnte ich auch, aber das wäre viel zu langsam. kennt da jemand irgenteile elegante lösung(algorithmus), den man bei bedarf dann auch in andere programmiersprachen übernehmen könnte?
p.s. ich will nicht auf c++ & stl gehen, grund: das programm soll später auf fortran umgeschrieben werden.
-
vielleicht so?
... if (set1.min >= set2.min && set1.max <= set2.max) { // 1 passt in 2 oder beide gleich } else if (set2.min >= set1.min && set2.max <= set1.max) { // 2 passt in 1 } else { // nix passt } ...
-
mit Wertebereichen start1 <= x < end1 und start2 <= x < end2:
(start1 >= start2 && start1 < end2) || (start2 >= start1 && start2 < end1)
-
+fricky schrieb:
vielleicht so?
... if (set1.min >= set2.min && set1.max <= set2.max) { // 1 passt in 2 oder beide gleich } else if (set2.min >= set1.min && set2.max <= set1.max) { // 2 passt in 1 } else { // nix passt } ...
Damit ermittelst Du nur, ob eine Menge ganz in der anderen aufgeht. Beispiel 2 würde damit nicht erfasst bzw mit "nein" beantwortet.
-
Deswegen hat er wahrscheinlich "passt in" reingeschrieben. Hat er wieder zu schnell gelesen
-
danke für eure hilfe. so funktioniert es. hätte ich auch selbst draufkommen können.
naja, einfach nicht richtig nachgedacht.
-
mazal schrieb:
Hat er wieder zu schnell gelesen
hat er schnittmenge mit teilmenge vertauscht.