バブルソート
バブルソート(bubbleSort)とは何ですか?
バブル ソートはすべてのソート アルゴリズムの中で最も単純ですが、もちろんパフォーマンスは最悪です。バブルソーティングのアイデアは実際には非常にシンプルで、その名前のように、水の中で「泡」を出します。水中には小さな泡がたくさん点在しており、それが次々と水面に浮かび上がってきます。
たとえば、順序のない配列の集合では、左端が底、右端が水面となり、常に左端の要素と右端の要素が比較され、最終的には右端と位置が入れ替わります。
アルゴリズムのステップ
- バブルソートは隣接するすべての要素を比較します
- 最初の数字から始めて、隣接する 2 つの数字ごとに比較します
- 隣り合う2つの数字を比較した後、小さい方を左側に、大きい方を右側に配置するという考え方に従って位置を交換します。
- 1 ラウンドの実行後、大きい数値が右端にソートされます。
- これをn-1回繰り返すと全ソートが完了する
アニメーションデモリンク
https://visualgo.net/zh/sorting
規範事例
- 時間計算量: O(n^2)
- 空間の複雑さ: O(1)
Array.prototype.bubbleSort = function () {
for (let i = 0; i < this.length - 1; i++) {
for (let j = 0; j < this.length - 1 - i; j++) {
if (this[j] > this[j + 1]) {
const temp = this[j]
this[j] = this[j + 1]
this[j + 1] = temp
}
}
}
}
const arr = [5, 4, 3, 2, 1]
arr.bubbleSort() // [1, 2, 3, 4, 5]
コードには 2 つのネストされたループがあるため、データの増加に応じて増加する変数が使用されないため、時間計算量は O(n^2)、空間計算量は O(1) になります。
元リンク:菜園フロントエンド