イベントアドレス: CSDN 21 日間学習チャレンジ
序文
古典的な並べ替えアルゴリズムは聞いたことがある人、使ったことがある人も多いかもしれませんが、聞いたことがない人も多いでしょう。なぜ?フレームワークや依存パッケージが増えてきた今、実際のソートのシーンを使って業務として機能に落とし込むことができるようになるため、機能は知っていても動作ロジックを知らない人もいます。
以上を踏まえて、関数の操作ロジックをよりよく理解するために、基本的なソート方法の操作ルールと個人的な理解を整理しました。
この記事では、選択ソートと、選択ソートとバブルソートの違いについて説明します!
よく考えてみると、選択ソートとバブルソートの違いを正確に説明できず、同じだと思っている人が多いからです。
選択ソート
選択ソートは、単純で直感的なソート アルゴリズムです。名前が示すように、選択ソートの核となるポイントは、配列内の最大値または最小値を選択することです。、指定された場所に論理的に配置されます。
選択ソートの実装原則
- 最初に、ソートされていないシーケンスで最小 (最大) の要素を見つけ、ソートされたシーケンスの先頭に格納します。
- 次に、ソートされていない残りの要素から最小 (最大) の要素を探し続け、ソートされたシーケンスの最後に配置します。
- すべての要素がソートされるまで同様です。
コード
function selectionSort(array) {
//外循环控制次数
for (var i = 0; i < array.length; i++) {
//假定最小值用于比较
var min = array[i];
//j=i+1使其从剩余元素中进行筛查
for (var j = i + 1; j <= array.length; j++) {
//从剩余数字中寻找最小值
if (min > array[j]) {
//更新最小值
min = array[j];
//交换a[j]和a[i]
var item = array[j];
array[j] = array[i];
array[i] = item;
}
}
}
console.log("selectionSort result:", array);
}
selectionSort([4, 5, 1, 3, 2]);
出力値:
複雑さ
選択ソートの時間計算量、
時間計算量: O(n^2);
空間計算量: O(n);
選択ソートとバブルソートの比較
違い:
- バブル ソート: ペアワイズ比較、即時交換。
- 選択方法の並べ替え: 最初に最も価値の高いものを見つけ、一度交換します。
長所と短所:
- 選択ソートは、バブル ソートよりも高速です。選択ソート要素の交換回数は O(n)、バブルソート要素の交換回数は O(n^2) である. 交換に要する CPU 時間は比較に要する CPU 時間よりも多いため, n の値が小さい場合、選択ソートはリスクよりもコストがかかります。バブル ソートは高速です。
- バブル ソートは、選択ソートよりも実装が簡単です。ソートするデータの量が少なく、効率の要件が高くない場合は、バブル ソートで十分に満たすことができます。
メッセージ
選択ソートとバブルソートのロジックは同じように見え、どちらもソート機能を実現できますが、実は計算速度が同じではないのが基本アルゴリズムの魅力です。
円が大きいほど、予測不可能な可能性が広がります!