Hallo zusammen,
ich versuche schon eine ganze Weile Laufzeiten zu berechnen, aber ich verstehe es einfach nicht. Bin regelrecht auf Kriegsfuß damit. Habe mich über Google schon informiert und so Sachen wie "eine for-Schleife wird n-Mal durchlaufen", "wenn es zB nur eine for-Schleife gibt, dann hat das Programm die Laufzeit O(n)", usw, die sind mir klar, allerdings möchte mein Dozent eine Rechnung, wie unten zu sehen. Würde mich echt freuen, wenn mir das jemand erklären kann!
Hier das Beispiel aus der Vorlesung:
Mein Problem fängt schon bei der Tabelle, Zeile 2 an. Wieso wird Zeile 2 n-1-mal durchlaufen ?
Und bei den Rechnungen wird zB tj mit (n(n-1)/2 -1) ersetzt. Wieso und woher kommt das ?
Danke schon mal für jegliche Hilfe !
ich versuche schon eine ganze Weile Laufzeiten zu berechnen, aber ich verstehe es einfach nicht. Bin regelrecht auf Kriegsfuß damit. Habe mich über Google schon informiert und so Sachen wie "eine for-Schleife wird n-Mal durchlaufen", "wenn es zB nur eine for-Schleife gibt, dann hat das Programm die Laufzeit O(n)", usw, die sind mir klar, allerdings möchte mein Dozent eine Rechnung, wie unten zu sehen. Würde mich echt freuen, wenn mir das jemand erklären kann!
Hier das Beispiel aus der Vorlesung:
Code:
public static void insertion_sort(int [] A, int n){
int i; /* Indexvariable für innere Schleife*/
int key; /* Einzufügender Schlüssel*/
1. for(int j=2; j<=n; j++){
2. key = A[j];
3. /* Füge A[j] in die sortierte Folge A[1..j-1] ein */
4. i=j-1;
5. while ((i>0) && (A[i] > key)){
6. A[i+1] = A[i];
7. i--,;
}
8. A[i+1] = key;
}
}




Mein Problem fängt schon bei der Tabelle, Zeile 2 an. Wieso wird Zeile 2 n-1-mal durchlaufen ?
Und bei den Rechnungen wird zB tj mit (n(n-1)/2 -1) ersetzt. Wieso und woher kommt das ?
Danke schon mal für jegliche Hilfe !