Straight Selection: Vergleiche und Zuweisungen
-
Moin,
Mein lieber Informatiklehrer hat in der letzten Stunde die Vergleiche und Zuweisungen des Algorithmus "straight selection", also Sortieren durch Einfügen so schlecht erklärt, dass ich es nicht verstanden habe.
Das ganze soll von den Anzahl der zu sortierenden Zahlen abhängen ->n.Hier ist der quelltext:
for i := 1 To n-1 do begin min := s_feld[i]; platz_min := i; for j := i+1 to n do begin min := s_feld; okatz_min := j; end; end; if platz_min > i Then Begin s_feld[platz_min] := s_feld[i]; s_feld[i] := min; end; end;
Da ich weiß, dass das hier ein c++-forum ist, versuche ich, den quelltext extra für euch in C++ zu schreiben ^^:
for(int i = 1;i <= n-1;i++) { min = s_feld[i]; platz_min = i; for(int j = i+1;j <= n;j++) { if(s_feld[j] < min) { min = s_feld[j]; platz_min = j; } } if(platz_min > i) { s_feld[platz_min] = s_feld[i]; s_feld[i] = min; } }
Kann mir vieleicht jemand das ganze für jede einzelne Zeile aufschreiben ?
Zuweisungen
Z1: n
Z3: 2*(n-2)
.
.
.
uswAm schluss hat dann irgendwas lustiges mit einem Summenzeichen und n + (n² + n)/2 + (n² - n)/2 + n-1 gestanden.
Bei den Vergleichen muss
vgl = n² + 2n -2
rauskommen
bei den zuweisungen im best case :n²/2 + 7n/2 - 3
worst case soll 3n²/2 + 9/2n -5 sein.
Ich frage mich nur, wie man auf diese ergebnisse kommt.
Wäre nicht schlecht, wenn mir jemand bis spätestens heute abend das erklären könnte, weil ich morgen schon die Arbeit schreiben muss
Danke im vorraus !
Lusches