Sortieralgorithmen

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
Zwei sehr unterschiedliche Sortierverfahren im Vergleich:

<code id="5b1e50a5b44ed">
// Eine Liste mit 100 zufällige Zahlen soll aufsteigend sortiert werden
var Liste = [
  70, 73, 48, 13, 37, 58, 71, 96, 71, 9, 49, 75, 53, 
  51, 69, 55, 10, 11, 56, 68, 55, 88, 94, 14, 84, 85, 
  18, 77, 72, 85, 1, 10, 14, 97, 62, 22, 6, 51, 32, 41, 62, 
  81, 98, 73, 80, 3, 56, 65, 42, 97, 55, 43, 8, 39, 14, 
  73, 91, 62, 6, 62, 37, 78, 59, 84, 2, 92, 41, 59, 60, 30, 
  2, 15, 92, 18, 36, 73, 42, 44, 7, 49, 17, 75, 42, 79, 97, 7, 
  53, 94, 99, 76, 100, 49, 39, 67, 25, 5, 32, 55, 38, 90
];
</code>

== Bogo Sort ==
Es wird solange zufällige sortiert, bis die Liste geordnet ist.

<run id="5b1e50a5b4595">
function BogoSort(a){
  while(true){
    // zufällig ordnen
    for(var i =0; i < a.length; i++){
      var rand = Math.floor(Math.random() * a.length);
      var tmp = a[i]; 
      a[i] = a[rand]; 
      a[rand] = tmp;
    }    // auf geordnet überprüfen
    var geordnet = true;
    var zuletzt = -1;
    for(var i=0; i < a.length; i++){
      if(zuletzt > a[i]) {
        geordnet = false; 
        break;
      }
      zuletzt = a[i];
    }
    // wenn geordnet, ergebnis zurückgeben, sonst nochmal probieren
    if(geordnet) return a; 
  }
}

var start = new Date();
console.log(BogoSort(Liste));
var ende = new Date();
console.log("Zeit: "+(ende.getTime() - start.getTime())+ " ms");
</run>