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)
    .
    .
    .
    usw

    Am 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


Anmelden zum Antworten