ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript のバブル ソートと選択ソートを 1 分で完全に理解する

JavaScript のバブル ソートと選択ソートを 1 分で完全に理解する

WBOY
WBOY転載
2021-12-16 18:49:332386ブラウズ

この記事では、JavaScript におけるバブル ソートと選択ソートの関連知識について学びます。バブル ソートでは、比較が行われるたびに即座に交換する必要がありますが、選択ソートでは、ソートされていない最小の数値とその値を見つけることが必要です。 . 要素をその位置で交換します。選択ソートでは交換が少なくなり、計算効率がある程度向上します。みんなが助けてくれることを願っています。

JavaScript のバブル ソートと選択ソートを 1 分で完全に理解する

#JavaScript バブル ソートと選択ソート

バブル ソート

  • 原則:

隣接する 2 つの要素を比較し、値が大きい方の要素を右に移動します。コアが隣接していることに注意してください。

  • アイデア:

隣り合う 2 つの数字を順番に比較し、小さい方の数字を前に置き、大きい方の数字を後ろに置きます。最初のラウンドの後、配列内の最大の数値が最後にランク付けされます。

2 番目のラウンド: 次に、配列は最初の番号から残りの番号までの隣接する番号を順番に比較し、最大の番号を最後にランク付けします。

並べ替えが完了するまで手順を繰り返します。

注: 最後から 2 番目のラウンドが終了するまでに、最後のラウンドの数字が 1 つ残っています。これは最小でなければならないため、並べ替える必要はありません。つまり、ソートされた配列の長さから 1 (arr.length-1) ラウンドを引いた値のみを使用します。

アルゴリズムの視覚化:

JavaScript のバブル ソートと選択ソートを 1 分で完全に理解する

コードは次のとおりです。 :

 <script>
        function ismaopao(arr) {
            //控制比较轮数
            for (var i = 0; i < arr.length - 1; i++) {
                //冒泡排序,两两交换,从头开始做比较(大数下沉)
                for (var j = 0; j < arr.length - 1 - i; j++) {
                    //arr.length-1-i,因为前面的判断已经找到最大的值,就不需要与找到的大数做比较了
                    if (arr[j] > arr[j + 1]) {
                        var a;
                        a = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = a;
                    }
                }
            }
            return arr;
        }
        console.log(ismaopao([6, 3, 4, 5, 2, 1]))
    </script>

結果は次のとおりです:

JavaScript のバブル ソートと選択ソートを 1 分で完全に理解する

並べ替えを選択

  • アイデア:

配列の最初の位置の数値が最小であると仮定し、それを後続の各数値と比較します。見つかった場合は、その値に対応する添字を交換します。これは添字であることに注意してください。最初の検索ラウンドの後、最小値の位置をロックし (つまり、添字を見つけて)、値を交換できます。

2 番目のラウンドでは、2 番目の位置の数値が最小であると想定されます。このとき、配列の最初の値は無視されます (既に最初のラウンドで見つかった最小値であるため) ) を取得し、添字を次の最小値に交換します。ロック後、値を交換します。

並べ替えが完了するまで手順を繰り返します。

注: 最後から 2 番目のラウンドが終了するまでに、最後のラウンドの数字が 1 つ残っています。これは前の数字より大きくなければならないため、並べ替える必要はありません。つまり、ソートされた配列の長さから 1 (arr.length-1) ラウンドを引いた値のみを使用します。

アルゴリズムの視覚化:

JavaScript のバブル ソートと選択ソートを 1 分で完全に理解する

コードは次のとおりです。 :

カプセル化はありません。自分でカプセル化できます

<script>
        //选择排序,比冒泡排序次数少
        var arr = [5, 3, 4, 2, 1]
        var min = 0; //定义一个Min为数组的下标
        for (var i = 0; i < arr.length - 1; i++) {
            min = i;
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[min] > arr[j]) {
                    min = j; //交换下标,就是交换位置
                }
            }
            var a = 0;
            // 现在min的值就是对应着数组最小值的下标,
            // 然后再用下标为i对应数组中的值来交换,i随着每一轮的变化而变化
            a = arr[min];
            arr[min] = arr[i];
            arr[i] = a;
        }
        console.log(arr);
    </script>

結果は次のとおりです:

JavaScript のバブル ソートと選択ソートを 1 分で完全に理解する##関連ビデオ チュートリアルの推奨事項:

jQuery ビデオ チュートリアル

以上がJavaScript のバブル ソートと選択ソートを 1 分で完全に理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。