Hallo, ich habe eine konzeptuelle Frage wie man das möglichst effizient hinkriegt:
In meinem Beispiel habe ich 2 ArrayList<ArrayList<Long>> , nenne wir sie A und B.
könnte auch einfache ArrayList<Long> sind, ist für die Frage grundsätzlich egal.
Und ich habe eine selbst geschriebene Methode , die als Input ein Element der Lsite A und ein Element der Liste B nimmt und als Ergebnis eine normale int zahl rauswirft. nennen wir sie f(Ai,Bi).
wie die methode intern diese zahl bestimmt, ist egal.
zuerst bestimme zu jedem b aus B das Maximum der Werte f(a,b) mit a aus A.
Heißt, man nimmt ein bestimmtes Element aus B, gleicht es mit allen Werten aus b ab (indem man f(a,b) bildet jeweils).
von all diesen gefundenen Werten sucht man das maximum und merkt es sich.
gleiches tut man für die anderen Elemente aus b sodass man eine Liste mit Werten hat.
von diesen wiederum bildet man dieses mal das Minimum.
Ich machs mal an einem beispiel damit mans kapiert was ich meine:
Seien die Arraylist A={1,2,3} und B={9,3,7}
sei f(a,b)=a+b
Sei C auch ein Array.
wir bestimmen zuerst
C[0]:=min(f(1,9),f(2,9),f(3,9))=min(10,11,12)=10
analog finden wir C[1]=min(f(1,3),f(2,3,),f(3,3))=f(4,5,6)=4
C[2]=...=8
demnach ist also C={10,4,8}
von den elementen bilden wir nun noch das maximum:
max(10,4,8)=10
das heißt für A={1,2,3} und B={9,3,7} (und f wie oben definiert) ist das gesuchte ergebnis 10.
so auf die art will ich auch bei meinem problem sozusagen das max von einer menge an minima finden.
natürlich könnte ich wie hier (aktuell machen ich es auch so) die bestimmten minima alle in einen array speichern und die arraelemente danach noch durchsuchen welches davon nun wiederum das maximum ist.
nur würde ich mir dieses bilden von so zwischenarrays gerne ersparen und kluge rechnereien und so einfach direkt das ergebnis finden lassen.
gibts da irgendwie eine kluge vorgehensweise?
In meinem Beispiel habe ich 2 ArrayList<ArrayList<Long>> , nenne wir sie A und B.
könnte auch einfache ArrayList<Long> sind, ist für die Frage grundsätzlich egal.
Und ich habe eine selbst geschriebene Methode , die als Input ein Element der Lsite A und ein Element der Liste B nimmt und als Ergebnis eine normale int zahl rauswirft. nennen wir sie f(Ai,Bi).
wie die methode intern diese zahl bestimmt, ist egal.
zuerst bestimme zu jedem b aus B das Maximum der Werte f(a,b) mit a aus A.
Heißt, man nimmt ein bestimmtes Element aus B, gleicht es mit allen Werten aus b ab (indem man f(a,b) bildet jeweils).
von all diesen gefundenen Werten sucht man das maximum und merkt es sich.
gleiches tut man für die anderen Elemente aus b sodass man eine Liste mit Werten hat.
von diesen wiederum bildet man dieses mal das Minimum.
Ich machs mal an einem beispiel damit mans kapiert was ich meine:
Seien die Arraylist A={1,2,3} und B={9,3,7}
sei f(a,b)=a+b
Sei C auch ein Array.
wir bestimmen zuerst
C[0]:=min(f(1,9),f(2,9),f(3,9))=min(10,11,12)=10
analog finden wir C[1]=min(f(1,3),f(2,3,),f(3,3))=f(4,5,6)=4
C[2]=...=8
demnach ist also C={10,4,8}
von den elementen bilden wir nun noch das maximum:
max(10,4,8)=10
das heißt für A={1,2,3} und B={9,3,7} (und f wie oben definiert) ist das gesuchte ergebnis 10.
so auf die art will ich auch bei meinem problem sozusagen das max von einer menge an minima finden.
natürlich könnte ich wie hier (aktuell machen ich es auch so) die bestimmten minima alle in einen array speichern und die arraelemente danach noch durchsuchen welches davon nun wiederum das maximum ist.
nur würde ich mir dieses bilden von so zwischenarrays gerne ersparen und kluge rechnereien und so einfach direkt das ergebnis finden lassen.
gibts da irgendwie eine kluge vorgehensweise?