8
私はJavaScriptのソートアルゴリズムの性能比較についていくつかのresearchを行っており、予期しない結果が見つかりました。バブルソートは、シェルソート、クイックソート、ネイティブのJavascript機能など、他のものよりも優れたパフォーマンスを提供します。なぜこれが起こるのですか?パフォーマンステストの方法が間違っているのでしょうか?バブルのJavascript実装が他のソートアルゴリズムよりもずっと速くソートするのはなぜですか?
私の研究成果はhereです。ここで
は、いくつかのアルゴリズムの実装例は以下のとおりです。バブルソートは、すでにソートされている配列をソートする際に高速であるため、
/**
* 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());
}
私は 'filter'を呼び、他の' quickSort'と 'concat'はquickSortを非常に遅くすると思います。 – JiminP