この記事の例は、Javaがバブリングソートを使用して配列をソートする方法を示しています。あなたの参照のために全員のためにそれを共有してください。詳細は次のとおりです。
1。バブルソート:
バブリングソートを使用して、配列をソートします
2。基本概念:
2つの隣接する数値が順番に比較され、小数の前面を置き、多数が背後にあります。つまり、最初の旅行では、最初の数字と2番目の数字を最初に比較し、小数を以前に置き、多数です。次に、2番目と3番目の数値を比較し、小数を前に入れ、大量の数字の後に、最後の2つの数値まで続行し、小数を前に置きます。この時点で、最大数が最後まで設定されました。 2回目の旅行で:最初のペアから始まります(2番目のペア数と3番目の数値が減少する可能性があるため、最初の数字は2番目の数値よりも少なくなります)、小数を入れた後に小数点を付けます、それは比較されました2番目の旅行の終わりに、最後から2番目の位置がすでに最大です)。その結果、最終順序が完了するまで上記のプロセスを繰り返します。
第三に、アイデアを実現します:
デュアルループの実装では、外側のサイクル変数がiに設定され、内部循環変数はJに設定されます。ソートする必要があるn数値がある場合、外部サイクルはn-1回繰り返され、内サイクルはn-1、n-2、...、1時間を繰り返します。毎回比較する2つの要素は内なるサイクルJに関連しています。それらは[j]と[j+1]で個別に識別でき、iの値は1,2、...、n-1です。 、各iの値のn-1、jは0,1,2、... niです。
配列の長さnをn:
1。 2つの隣接する2つのデータと比較して、以前のデータが後のデータよりも大きい場合、2つのデータが交換されます。
2。このようにして、最大のデータは、N-1データへの1つのトラバーサルの後、アレイのN-1位置に「沈む」ことです。
3。 n = n-1、nが0でない場合、最初の2つのステップを繰り返します。そうしないと、ソートが完了します。
4。Javaコードの実装:
パッケージarraydemo; int [] a = {2、76、12、34、23、86}; * *バブルソーティング関数は、静的で便利な使用として定義されます。 *開発のツールを定義する方法でもあります。 ++){ / / /これは(int j = 0; j <a.length -i; j ++){// j <a.length -i、if(aの比較要素の数のコントロール番号です。 [j]> a [j + j + 1]){j] = a [j + 1] = test;}}};
5。パフォーマンス分析:
レコードシーケンスの初期ステータスが「正のシーケンス」である場合、バブリングソートプロセスはソートする必要があり、ソートプロセス中のn-1の比較のみがモバイルレコードなしで実行されます(n-)。 1)/2比較とレコードを実行する必要があります。したがって、泡のソートの合計時間の複雑さはo(n*n)です。
6。アルゴリズムの最適化:
バブリングソート方法の欠陥と改善方法:
まず、ソートプロセス中、最終的な順序が実行された後、データは完全にソートされましたが、この並べ替えを完了するためにプログラムは決定することができません。ノンノン-Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Non -Nonの値。各ソートは、ソートの開始前に0に設定されます。ソートの新しいラウンドで、このサインが0の場合、最後の時間が交換されていないことを意味します。
/ ***バージョン機能の改善*/ public static void bubblesort(int [] a){flag){flag = false; ; i ++){for(int j = 0; j <a.length -i; j ++){a [j]> a [j+1]){int temp = a [j] ; a [j + 1];
第二に、泡立ちのソートでは、スキャンが無数に交換される場合があります。または、従来のバブリングソートアルゴリズムといくつかの改善されたアルゴリズムでは、1つのスキャンのみが記録されている場合があります。データ交換の位置情報は処理されません。この情報を最大限に活用するために、グローバルスキャンでは、各バックオーダーデータでローカルバブルソートを実行できます。これは、ローカルバブルソートと呼ばれます。ローカルバブルソートとバブルソートアルゴリズムには、同じ時間の複雑さがあり、正と逆の順序の条件下では、キーワードと動きの数に必要なキーワードの数はまったく同じです。ローカルバブルソートとバブリングソートのデータの動きの数は常に同じであるため、ローカルバブルソートに必要なキーワードの数は、しばしば泡立ちのソートよりも少ないためです。平均して、より少ない比較の利点がプログラムの複雑さによってもたらされる追加費用を相殺するのに十分ではない場合、および地元のバブリングソートの時間パフォーマンスは非常に優れています偽造品より。 n無効データの場合、バブリングソート中の場合、K+1データのK+1データ逆シーケンスを使用する場合、最初のデータの泡のようなものが作成され、正しい位置に移動すること、つまり、以前のK+1データを正の順序に調整させます。この泡の方法は以前のK+1データのみで泡立っているため、それを - ローカルバブルと呼びます
この記事がすべての人のJavaプログラムのデザインに役立つことが期待されています。