バブルソート
6927 ワード
バブルソートは、配列をソートするための効率の欠如のため、単に最も広く議論されたアルゴリズムの一つです.配列が既にソートされている場合、バブルソートは1回だけ配列を通過します(ただし、以下の概念を使用します)しかし、最悪の場合のシナリオはO(nの)の実行時間です.
バブルソートの前大統領バラクオバマも.
o(n←)の成長率をグラフ化するとき,o(n log n)であるmerge sortのような他のソートアルゴリズムと比較して,それはより速いスケールで成長することを示した.
バブルソートである残虐性を考えれば、アルゴリズムを理解し、それがなぜ貧しいのかを解読することはまだ重要です.
バブルソートをコーディングするための2つの概念を調べましょう.
コンセプト1配列を反復し、各要素を配列の次の要素に対してチェックします. 現在の要素が次の要素より大きい場合、それらを交換します. もしそうでなければ、ポインタを動かし、次の2つの要素を比較します. 配列の最後に到達したら、最大の要素が最後の位置にあることを知っています. このプロセスをn回繰り返し、nが配列の長さであり、毎回、最後のソートされた要素まで繰り返します.
概念1の可視化
これがどのように長さ6の配列で実行されるかを見てみましょう.
コンセプトコード
コンセプトの1つに2つのポインタ(2つの入れ子になったループ)が必要です.我々が反復するたびに、このインデックスがソートされた値を含むということを知っているように、上限は1によって減少します.
コンセプト2配列を反復し、各要素を配列の次の要素に対してチェックします. 現在の要素が次の項目より大きい場合、それらを交換します. はスワップが起こったことを示します. スワップが発生した場合、再度ループをループします. 私たちは、スワップが発生しなかったときに配列がソートされることを知っています.
コンセプト2コード
スワップが発生したかどうかを示すブール値を格納するために変数を使用しているため、このメソッドを使用するポインタは1つだけ必要です.概念1とは対照的に、この概念は、私たちがそれを通過するたびに、配列の各項目を繰り返すことを要求します.
実行時間
バブルソートはo(n≧)で最も効率的なソートアルゴリズムの一つです.最悪の場合、配列内のすべての要素に対して各要素を比較する必要があります.
バブルソートの前大統領バラクオバマも.
o(n←)の成長率をグラフ化するとき,o(n log n)であるmerge sortのような他のソートアルゴリズムと比較して,それはより速いスケールで成長することを示した.
バブルソートである残虐性を考えれば、アルゴリズムを理解し、それがなぜ貧しいのかを解読することはまだ重要です.
バブルソートをコーディングするための2つの概念を調べましょう.
コンセプト1
概念1の可視化
これがどのように長さ6の配列で実行されるかを見てみましょう.
コンセプトコード
コンセプトの1つに2つのポインタ(2つの入れ子になったループ)が必要です.我々が反復するたびに、このインデックスがソートされた値を含むということを知っているように、上限は1によって減少します.
function bubbleSortConcept1(arr) {
for (let j = arr.length - 1; j > 0; j--) {
for (let i = 0; i < j; i++) {
if (arr[i] > arr[i + 1]) {
let temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
}
コンセプト2
コンセプト2コード
スワップが発生したかどうかを示すブール値を格納するために変数を使用しているため、このメソッドを使用するポインタは1つだけ必要です.概念1とは対照的に、この概念は、私たちがそれを通過するたびに、配列の各項目を繰り返すことを要求します.
function bubbleSortConcept2(arr) {
let swapped;
do {
swapped = false;
console.log(arr);
arr.forEach((item, index) => {
if (item > arr[index + 1]) {
// Save the value to a variable so we don't lose it
let temp = item;
arr[index] = arr[index + 1];
arr[index + 1] = temp;
swapped = true;
}
})
} while (swapped);
}
実行時間
バブルソートはo(n≧)で最も効率的なソートアルゴリズムの一つです.最悪の場合、配列内のすべての要素に対して各要素を比較する必要があります.
Reference
この問題について(バブルソート), 我々は、より多くの情報をここで見つけました https://dev.to/emmabostian/bubble-sort-in-javascript-2conテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol