JavaScript Array aufsteigend sortieren

Status
Für weitere Antworten geschlossen.

rotzdiekuh

Commander
Registriert
Jan. 2010
Beiträge
2.049
Hey Leute,

ich sitz gerade an ner Aufgabe und komme einfach nicht so richtig auf die Lösung. Im Prinzip müsste es ultra simpel sein..

Aufgabe:
Schreiben Sie eine JavaScript-Funktion, die als Parameter eine beliebig lange Liste von Zahlen in Form eines
Arrays erhält und true zurückgibt, wenn das Array aufsteigend sortiert ist – andernfalls
false. Es ist Ihnen nicht gestattet, auf jegliche sort-Funktionen der Standardbibliothek
zurückzugreifen.
Schreiben Sie weiter ein HTML-Dokument, mit dem Sie Ihre Funktion auf Richtigkeit
prüfen können.

Ich bin über jede Hilfe dankbar!
 
Laut Aufgabenstellung musst du ja nur prüfen, ob ein aufsteigensortiertes Array vorliegt oder nicht.
Ergo nur prüfen ob der rechte (nachfolgende) Nachbar eines Elements größer ist...
 
Du scheinst ja nicht sortieren zu müssen, sondern nur zu testen ob es sortiert ist.

Und wenn du dir überlegst, was ein aufsteigender Array für Eingeschaften hat: also das die Zahl im Index 1 größer als die im Index 0 ist, dann sollte das doch schon helfen oder?
 
Vielleicht nicht schön, aber einfach:

Du setzt einen Bool Wert auf True, der zb. "aufsteigend" heißt.

Nun gehst du durchs Array und guckst, ob array > array[i+1] ist. Wenn ja, dann setzt du "aufsteigend" auf false, denn dann kann es ja nicht aufsteigend sortiert sein.

Am Ende gibst du dann einfach "aufsteigend" aus.

PS: achte auf die Arraygrenze am Ende.
 
Danke. bin auf eine Lösung gekommen

function istSortiert(x) {
var length = x.length;
for (i = (x.length-1); i > 0; i--) {
if (x < x[(i-1)]) {
return false;
}
}
return true;
}
 
Kleiner Tip: Moderne Browser beherrschen eine forEach-Funktion für Arrays. Deine For-Schleife funktioniert zwar, forEach ist aber deutlich eleganter.
 
GustlPC schrieb:
Ich finde nicht das es mit foreach eleganter wäre, denn auch dann bräuchte man eine zählvariable um zu kontrollieren das man den Index nicht außerhalb des arrays setzt

Daaron meint so wie ich das verstehe die forEach Funktion auf einem Array
Also in der Art:

Code:
function isSorted(array) {
    var x = array[0];
    var result = true;
    array.forEach(function(item) {
        if (result != false) {
            result = x <= item;
            x = item;
        }
    })
    return result;
}

Keine Zaehlvariable, aber du brauchst trotzdem helper Variablen um zu vergleichen und das Ergebnis zurueckzugeben (zumindest seh ich keine andere moeglichkeit)

Das Problem dabei (mal davon abgesehen das ich es nicht getestet habe da ich gerade keine Laufzeit fuer JavaScript hab um es zu testen) das du das gesamte Array auf jedenfall durchlaeufst und nicht vorher aussteigen kannst.

Ziemlich guter Stack-Overflow Thread zum Thema ueber ein Array laufen.
 
Zuletzt bearbeitet: (Quelle)
Status
Für weitere Antworten geschlossen.
Zurück
Oben