Okay, danke euch...aber auf dem O(wurzel(n)) würde ich jetzt immer noch nicht kommen, egal. also logarithmisch immer dann, wenn die eingabe halbiert wird in der schleife?
ok, nun die nächsten, mit denen ich wieder übrhaupt nicht klarkomme:
/**
* 4.) berechnet Wurzel vom Quadrat von n. O(n) zunaechst Quadrat, dann daraus die
* Wurzel n+Wurzel(n^2)=n+n --> O(n)
*/
static int d(int n) {
return a(b(n));
}
Hmm, d.h. wenn ich ne Methode in einer anderen Methode aufrufe, werden die Laufzeiten einfach addiert? Dann war dies doch nicht so schwer.
/**
* 5.) berechnet Quadrat von Wurzel n. O(n) zunaechst Wurzel, dann davon das
* Quadrat Wurzel(n)+Wurzel(n)=2*Wurzel(n) --> O(Wurzel(n))
*/
static int e(int n) {
return b(a(n));
}
wie komme ich auf 2*wurzel(n) ? (woher kommt überhaupt dieses 2* ?)
dachte: wurzel(n) + (wurzel(n))^2 und das wäre ja wurzel(n)+n ... O(n) ?
blicke ich leider nicht durch
/**
* 6.) berechnet Wurzel vom Logarithmus von n. O(log2(n)) zunaechst Logarithmus,
* dann daraus die Wurzel log2(n)+Wurzel(log2(n))<2*log2(n) --> O(log2(n))
*/
static int f(int n) {
return a(c(n));
}
wieso ist denn log2(n)+Wurzel(log2(n)) kleiner als 2*log2(n) --> O(log2(n))
wenn ich z.b. für n=100 in den Taschenrechner eingebe ist 2*log2(n) nicht kleiner... (woher kommt wieder 2* ??)
/**
* 7.) berechnet Wurzel von n + Logarithmus von n. O(Wurzel(n)), da
* Wurzel(n)+log2(n)<2*Wurzel(n)
*/
static int g(int n) {
return a(n) + c(n);
}
2*Wurzel(n) steigt schneller als log2(n) ? und auch hier: woher kommt 2*wurzel(n) , wieso nicht nur Wurzel(n) ?
hui.. bisschen viel geworden... hoffe jemand hilft mir hierbei
dankööö :wave: