Einfügen eines Elements in eine sortierte Liste

Ok, ich bin mit getSharedPreferences zu speichern, mein high-score, aber bevor ich es tanken wollte ich Sortieren die Noten in aufsteigender Reihenfolge über das oder-array, aber wenn es feststellt, dass eine Punktzahl, die kleiner als es in der ersten pos-dann wird es nicht überprüfen, der rest ist für die kleinsten?

    //function to add score to array and sort it
    public void addscoretoarray(int mScore){
    for(int pos = 0; pos< score.length; pos++){
        if(score[pos]  > mScore){
            //do nothing
        }else {
                //Add the score into that  position
                score[pos] = mScore;
                break;
            }
    }
    sortArray(score);
}

soll ich anrufen, sortArray() vor und nach der Schleife um dieses problem zu beheben oder gibt es eine bessere Methode die gleichen Ergebnisse zu erzielen?

Sollte ich auch erwähnen, dass die sortArray(score) - Funktion nur aufrufen Arrays.Sortieren(Partitur)
wo die Partitur ist ein array von mScore

BEARBEITEN:
basierend auf dem, was @Vincent Ramdhanie gepostet habe ich überarbeitet der post:

    public void addscoretoarray(int mScore){
    int pos = score.length; 
    //sort the array (in ascending order)
    sortArray(score);

    //go though the array( in descending order) and check for a place that suits the conditions
    while(pos>=0 && score[pos] > mScore){ 
         pos--; //do nothing as score[pos] is larger than mScore
    }
     //so once a pos is found (e.g. broke out of the while loop)
     //check that it is still in the list
    if(pos >= 0){
        //if it is then move everything down 1 position
        for(int i = 0; i < pos; i++){
            score[i] = score[i+1];
        }
        //replace the initial pos with the new score
        score[pos] = mScore;
    }
}

Ich glaube immer noch, dass es drop-off der Liste, wenn in der for(int i = 0; i < pos; i++){ Schleife.

Aufgrund der break-Anweisung, die Sie verlassen der for-Schleife .
rufen Sie sortArray() vor - Vergleiche starten, und nach, dass Sie überprüfen mit dem größten Eintrag, und rückwärts zu bewegen.
danke Cthulhu, aber ich bin jetzt Fragen, es geht zu ersetzen, das kleinste, wie es wird die erste sein, die es erreichen wird, aber es kann mehr als eine Punktzahl, die kleiner ist als Sie, wie würde ich ersetzen, am höchsten Punktzahlen kleiner als Sie?
Sobald Sie sortiert sind, werden Sie wissen, dass diejenigen, die Links von diesem index sind kleiner. Ich sehe nicht das Problem, tut mir Leid.
Ich bin mir nicht sicher, um ehrlich zu sein! haha ich möchte sozusagen mein high-score-array und high scores und ersetzen die meisten relevant, und Stoß sich den rest

InformationsquelleAutor Russell Cargill | 2012-12-08

Schreibe einen Kommentar