2011-10-08 27 views
8

Javascript sıralama algoritmaları performans karşılaştırması hakkında bazı research yaptım ve beklenmeyen sonuçlar bulundu. Kabarcık sıralama, Kabuk sıralama, Hızlı sıralama ve yerel Javascript işlevselliği gibi diğerlerinden çok daha iyi bir performans sağladı. Bu neden oluyor? Belki performans testi yöntemimde yanlış mıyım?Neden Kabarcık Javascript uygulaması sıralama sıralama algoritmalarından çok daha hızlı?

Araştırma sonuçlarımmı here bulabilirsiniz. İşte

bazı algoritma uygulama örnekleri şunlardır: kabarcık sıralama is hızlı Zaten sıralanır bir dizi sıralama zaman çünkü var

/** 
    * Bubble sort(optimized) 
    */ 
    Array.prototype.bubbleSort = function() 
    { 
    var n = this.length; 
    do { 
     var swapped = false; 
     for (var i = 1; i < n; i++) { 
      if (this[i - 1] > this[i]) { 
       var tmp = this[i-1]; 
       this[i-1] = this[i]; 
       this[i] = tmp; 
       swapped = true; 
      } 
     } 
    } while (swapped); 
    } 

    /** 
    * Quick sort 
    */ 
    Array.prototype.quickSort = function() 
    { 
     if (this.length <= 1) 
      return this; 

     var pivot = this[Math.round(this.length/2)]; 

     return this.filter(function (x) { return x < pivot }).quickSort().concat(
      this.filter(function (x) { return x == pivot })).concat(
      this.filter(function (x) { return x > pivot }).quickSort()); 
    } 
+1

"Filter", diğer "quickSort" ve "concat" kelimelerinin çağrılması, quickSort'u son derece yavaşlatıyor. – JiminP

cevap

13

.

Aynı diziyi tekrar tekrar sıraladıkça, ilk sınamada ilk sterasyonda sıralanır, daha sonra sıralanan bir diziyi sıralarsınız.

Henüz sıralanmamış bir diziyi sıralamanın gerçek performansını sınamak için, her sıralama yinelemesi için yeni bir dizi oluşturmanız gerekir.