Kleine Gedankensstütze bei Arrays

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Morgen liebe Leute.


    Ich bräuchte mal eine kleine Gedankensstütze bei einer möglichst ressourcenschonenden "Arrayberechnung".


    Folgendes Konstrukt:
    - array[20] (=> kann also 20 Werte beinhalten)
    - In diesem Array sind mir unbekannte Zahlen drin (array[2] z.B. kann aber auch mal nicht gefüllt sein, also array[2] = -1 (nicht 0!))


    Ich möchte nun aus diesem Array die kleinste, zweitkleinste und die drittkleinste Zahl möglichst einfach herauslesen ("leere" Arrays ausgeschlossen).


    Hat da jemand eine kleine Berechnung / Erklärung dazu?


    MFG

  • Ist jetzt nur aus dem Kopf geschrieben, könnte aber klappen, probiers mal aus:


    new buffer[] = "9999,9999,9999";
    for(new i; i<20; i++) {
    if(array[i] == -1) continue;
    if(array[i] < buffer[0]) buffer[0] = array[i];
    else if(array[i] < buffer[1]) buffer[1] = array[i];
    else if(array[i] < buffer[2]) buffer[2] = array[i];
    }


    buffer[0]; //enthält kleinste Zahl
    buffer[1]; //enthält 2. kleinste Zahl
    buffer[2]; //enthält 3. kleinste Zahl


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Mit ein bisschen Umstellungen (buffer[1] = buffer[0] etc.) hat es schlussendlich funktioniert, vielen Dank :)


    MFG