Algorithmus für 3 größten werte

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
  • Ich suche einen Algorithmus mit dem ich die 3 größten Werte einer Arry in einer anderen Arry speicher.
    So habe ich angefangen:
    for(new i = 0;i < sizeof Gangzonen;i++)
    {
    Bigger[i] = GetBiggest(i);
    if(Bigger[i] == 0) Bigger2 = Gangzonen[i][GrovePPL];
    if(Bigger[i] == 1) Bigger2 = Gangzonen[i][BallasPPL];
    if(Bigger[i] == 2) Bigger2 = Gangzonen[i][VagosPPL];
    if(Bigger[i] == 3) Bigger2 = Gangzonen[i][AztecasPPL];
    if(Bigger[i] == 4) Bigger2 = 0;
    if(Bigger2 > TempBigger[0]) {TempBigger[0] = Bigger2;TempBigger[1] = i;} //TempBigger[0] ist die größte Zahl, TempBigger[i] ist die Herkunft
    }
    Damit bekomme ich den Größten Wert dieser Arry und speicher ihn unter TempBigger[0]
    wie bekomm ich den 2. und 3. größten? Dabei darf keine Zahl genau so groß sein wie TempBigger[0] gleichgroße zahlen werden aussortiert. Sollte die Arry nur 2 verschiedene Elemente haben, dann NUR dann darf das größte element doppelt vorkommen oder wenn die arry nur 1 zahl in ihren verschiedenen elementen hat nur dann darf 3 mal das selbe gespeichert werden.

    Einmal editiert, zuletzt von carlos1710 ()


  • #include <a_samp>


    new breadfishArray[5] = {125, 1256, 128, 628, 215};


    main() {
    new highestThreeArray[3] = {0, ...};

    for(new i = 0; i != sizeof(breadfishArray); i++) {
    if(breadfishArray[i] > highestThreeArray[0]) {
    highestThreeArray[2] = highestThreeArray[1];
    highestThreeArray[1] = highestThreeArray[0];
    highestThreeArray[0] = breadfishArray[i];
    } else if(breadfishArray[i] > highestThreeArray[1]) {
    highestThreeArray[2] = highestThreeArray[1];
    highestThreeArray[1] = breadfishArray[i];
    } else if(breadfishArray[i] > highestThreeArray[2]) {
    highestThreeArray[2] = breadfishArray[i];
    }
    }

    for(new a = 0; a != sizeof(highestThreeArray); a++) {
    printf("%i", highestThreeArray[a]);
    }
    }


    Code
    1256
    628
    215