Sort/Bubblesort

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
<h1>Funktionsweise</h1>
<ul>
  <li>Kernpunkt ist das "Aufsteigen" des (im aktuellen Durchlauf) höchsten Elements zur jeweils höchsten Stelle</li>
  <li>Im ersten Durchlauf wird Array komplett durchlaufen, das größte Element wandert an die letzte Stelle des Arrays</li>
  <li>Im zweiten Durchlauf erfolgt die Suche nach dem größten Element nur noch bis zum vorletzten Element. An diese Stelle kommt das größte gefundene Element</li>
  <li>Prozedere setzt sich fort, im vorletzten Durchlauf höchstens vertauschen der ersten beiden Elemente</li>
  <li>Optimierung: Prozedere abbrechen, sobald in einem Durchlauf kein Tausch stattgefunden hat (dann ist das Array sortiert)</li>
</ul>

<h1>Implementierung</h1>
<run id="5f02412a957f9">
function bubbleSort(zahlen) {
  for (var i = zahlen.length - 2; i >= 0; i--) {
    for (var j = 0; j <= i; j++) {
      if (zahlen[j] > zahlen[j + 1]) {

        // Vertauschen der beiden Zahlen, falls Vorgänger größer ist
        var hilf = zahlen[j];
        zahlen[j] = zahlen[j + 1];
        zahlen[j + 1] = hilf;

      }
    }
  }
  return zahlen;
}

console.log(bubbleSort([3, 2, 6, 1, 4, 5]));
</run>