ホームページ >Java >&#&チュートリアル >選択ソートとバブルソートの違い
バブル ソート:
バブル ソート (BubbleSort) の基本概念は、2 つの隣接する数値を順番に比較し、小数点を前に、大きな数値を後ろに置きます。つまり、最初のパスでは、まず最初と 2 番目の数値を比較し、小数を最初に、大きい数値を最後に置きます。
次に、2 番目の数値と 3 番目の数値を比較し、小数点を前に、大きい数値を後ろに置き、最後の 2 つの数値が比較されるまでこの作業を続けます。 、小数点は前に配置され、大きな数字は後ろに配置されます。これで最初の旅行が終了し、最大数が最後に残ります。 2 番目のパスでは、引き続き最初の数値ペアから比較を開始します (2 番目の数値と 3 番目の数値の交換により、最初の数値が 2 番目の数値より小さくなくなっている可能性があるため)、小数点を入力します。番号が再生された後、最後から 2 番目の番号まで比較が続けられます (最後から 1 番目の位置がすでに最大です)。 2 回目のパスでは、最後から 2 番目の位置で新しい最大数が取得されます (実際には、シーケンス全体で 2 番目に大きい数)。このようにして、最終的に並べ替えが完了するまで上記のプロセスを繰り返します。 (推奨学習: Java ビデオ チュートリアル )
選択の並べ替え:
初回は添字 0 から始まり、添字 0 が付いた番号と比較します。次の n-1 個の値; 最小値または最大値を検索し、添字 0 の位置に配置します; 2 番目の比較を添字 1 から開始します; 残りの最大値または最小値をクエリします; それを添字 1 の位置に配置します; など。並べ替えは完了しました
#例:
public class MaoPao { public static void main(String[] args) { int arr[]={23,12,46,24,87,65,18,14,43,434,65,76}; int k=0; //冒泡排序 for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1;j++){ if(arr[j]<arr[j+1]){ int t=arr[j]; arr[j]=arr[j+1]; arr[j+1]=t; k++; } System.out.print("i="+i+"的第j="+j+"次交换\t"); for(int d=0;d<arr.length;d++){ System.out.print(arr[d]+"\t"); } System.out.println(); } } System.out.println("交换的次数为"+k); //选择排序 int l=0; for(int i=0;i<arr.length-1;i++){ for(int j=i+1;j<arr.length-1;j++){ if(arr[i]<arr[j]){ int t=arr[i]; arr[i]=arr[j]; arr[j]=t; l++; } System.out.print("i="+i+"的第j="+j+"次交换\t"); for(int d=0;d<arr.length;d++){ System.out.print(arr[d]+"\t"); } System.out.println(); } } for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+"\t"); } System.out.println("交换的次数为"+l); } }
両者の違いを要約します
(1) バブル並べ替えは隣接する位置にある 2 つの数値を比較し、選択並べ替えは最大値または最小値を見つけるために比較します;
(2) バブル ソートの各ラウンド 比較後、位置が間違っている場合は、変更する必要があります。選択ソートの各ラウンドでは位置を変更するだけで済みます;
(3) バブル ソートは数値によって位置を見つけることであり、選択ソートは指定された位置での位置を見つけることです。番号;
その他の Java 関連の技術記事については、Java 開発チュートリアル 列にアクセスして学習してください。
以上が選択ソートとバブルソートの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。