bubble sort java java sorting algorithms code examples
このチュートリアルでは、Javaでのバブルソートについて、主要なJavaソートアルゴリズム、バブルソートの実装、およびコード例とともに説明します。
並べ替えアルゴリズムは、コレクションの要素を特定の順序に配置するためのアルゴリズムまたは手順として定義できます。たとえば、整数のArrayListのような数値コレクションがある場合、ArrayListの要素を昇順または降順で配置したい場合があります。
同様に、文字列コレクションの文字列をアルファベット順または辞書式順序で配置することもできます。ここで、Javaのソートアルゴリズムが登場します。
Android携帯をスパイするアプリ
学習内容:
Javaの主なソートアルゴリズム
ソートアルゴリズムは通常、時間と空間の複雑さに応じて評価されます。 Javaは、コレクションまたはデータ構造をソートまたは配置するために使用されるさまざまなソートアルゴリズムをサポートしています。
次の表は、Javaでサポートされている主なソートアルゴリズムと、それらの最良/最悪の場合の複雑さを示しています。
時間の複雑さ | ||||
---|---|---|---|---|
基数ソート | 線形ソートアルゴリズム。 | O(nk) | O(nk) | O(nk) |
ソートアルゴリズム | 説明 | 最良の場合 | 最悪の場合 | 平均的なケース |
バブルソート | 現在の要素を隣接する要素と繰り返し比較します。各反復の終わりに、最も重い要素が適切な場所で泡立ちます。 | オン) | O(n ^ 2) | O(n ^ 2) |
挿入ソート | コレクションの各要素を適切な場所に挿入します。 | オン) | O(n ^ 2) | O(n ^ 2) |
マージソート | それは分割統治法に従います。コレクションをより単純なサブコレクションに分割し、それらを並べ替えてから、すべてをマージします | O(nlogn) | O(nlogn) | O(nlogn) |
クイックソート | 最も効率的で最適化されたソート手法。分割統治法を使用してコレクションを並べ替えます。 | O(nlogn) | O(n ^ 2) | O(nlogn) |
選択ソート | コレクション内の最小の要素を見つけて、すべての反復の最後に適切な場所に配置します | O(N ^ 2) | O(N ^ 2) | O(N ^ 2) |
ヒープソート | 要素は、最小ヒープまたは最大ヒープを構築することによってソートされます。 | O(nlogn) | O(nlogn) | O(nlogn) |
上記の表に示されているソート手法とは別に、Javaは次のソート手法もサポートしています。
- バケットソート
- ソートのカウント
- シェルソート
- コムソート
ただし、これらの手法は実際のアプリケーションでは控えめに使用されているため、これらの手法はこのシリーズの一部ではありません。
Javaでのバブルソート手法について説明しましょう。
Javaでのバブルソート
バブルソートは、Javaのすべてのソート手法の中で最も単純です。この手法では、隣接する2つの要素を繰り返し比較し、目的の順序になっていない場合はそれらを交換することで、コレクションを並べ替えます。したがって、反復の終わりに、最も重い要素がバブルアップされて、その正当な位置を主張します。
リストAにA (0)、A (1)、A (2)、A (3)、….A (n-1)で与えられるn個の要素がある場合、A (0)はA (1)と比較されます。 )、A (1)はA (2)などと比較されます。最初の要素が2番目の要素より大きいかどうかを比較した後、2つの要素が順番になっていない場合は交換されます。
バブルソートアルゴリズム
バブルソート手法の一般的なアルゴリズムを以下に示します。
ステップ1: i = 0からN-1の場合、ステップ2を繰り返します。
ステップ2: J = i +1からNの場合–繰り返します
ステップ3: A (J)> A (i)の場合
A (J)とA (i)を交換します
(内部forループの終わり)
(Outerforループの場合は終了)
ステップ4: 出口
それでは、実例を使用してバブルソート手法を示しましょう。
サイズ5の配列を取り、バブルソートアルゴリズムを示します。
バブルソートを使用して配列をソートする
以下のリストをソートします。
Mac用の最高のビデオコンバータソフトウェア
上記のように、配列は完全にソートされています。
上記の図は、以下に示すように表形式で要約できます。
パス | ソートされていないリスト | 比較 | ソート済みリスト |
---|---|---|---|
{3,6,11,4,15} | {11.4} | {3,6,4,11,15} | |
1 | {11、3、6、15、4} | {11.3} | {3,11,6,15,4} |
{3,11,6,15,4} | {11.6} | {3,6,11,15,4} | |
{3,6,11,15,4} | {11.15} | {3,6,11,15,4} | |
{3,6,11,15,4} | {15.4} | {3,6,11,4,15} | |
二 | {3,6,11,4,15} | {3,6} | {3,6,11,4,15} |
{3,6,11,4,15} | {6.11} | {3,6,11,4,15} | |
3 | {3,6,4,11,15} | {3,6} | {3,6,4,11,15} |
{3,6,4,11,15} | {6.4} | {3,4,6,11,15} | |
{3,4,6,11,15} | ソート済み |
上記の例に示されているように、最大の要素は、反復/パスごとに適切な位置までバブルします。一般に、N-1(Nはリスト内の要素の総数)に達すると、パスします。リスト全体がソートされます。
バブルソートのコード例
以下のプログラムは、バブルソートアルゴリズムのJava実装を示しています。ここでは、数値の配列を維持し、2つのforループを使用して、配列の隣接する要素をトラバースします。 2つの隣接する要素が順番になっていない場合、それらは交換されます。
import java.util.*; class Main{ // Driver method to test above public static void main(String args()) { //declare an array of integers int intArray() = {23,43,13,65,11,62,76,83,9,71,84,34,96,80}; //print original array System.out.println('Original array: ' + Arrays.toString(intArray)); int n = intArray.length; //iterate over the array comparing adjacent elements for (int i = 0; i intArray(j+1)) { int temp = intArray(j); intArray(j) = intArray(j+1); intArray(j+1) = temp; } //print the sorted array System.out.println('Sorted array: ' + Arrays.toString(intArray)); } }
出力:
元の配列:(23、43、13、65、11、62、76、83、9、71、84、34、96、80)
ソートされた配列:(9、11、13、23、34、43、62、65、71、76、80、83、84、96)
よくある質問
Q#1)Javaのソートアルゴリズムとは何ですか?
回答: 並べ替えアルゴリズムは、コレクション内の要素を希望の方法で順序付けまたは配置できるアルゴリズムまたは手順として定義できます。
以下に、Javaでサポートされているソートアルゴリズムの一部を示します。
- バブルソート
- 挿入ソート
- 選択ソート
- マージソート
- クイックソート
- 基数ソート
- ヒープソート
Q#2) Javaで最高のソートアルゴリズムは何ですか?
回答: マージソートは、Javaで最速のソートアルゴリズムであると考えられています。実際、Java 7は、内部でマージソートを使用してCollections.sort()メソッドを実装しています。クイックソートもまた、別の最良のソートアルゴリズムです。
Q#3) Javaのバブルソートとは何ですか?
回答: バブルソートは、Javaで最も単純なアルゴリズムです。バブルソートは常にリスト内の2つの隣接する要素を比較し、それらが目的の順序でない場合はそれらを交換します。したがって、すべての反復またはパスの終わりに、最も重い要素が適切な場所にバブルアップされます。
Q#4) バブルソートNはなぜですか二?
回答: バブルソートを実装するために、2つのforループを使用します。
二分探索木実装c ++
行われた総作業量は、次のように測定されます。
内側のループによって実行された作業量*外側のループが実行された合計回数。
n個の要素のリストの場合、内部ループは各反復のO(n)に対して機能します。外側のループはO(n)回の反復で実行されます。したがって、実行される作業の合計はO(n)* O(n)= O(n二)
Q#15) バブルソートの利点は何ですか?
回答:バブルソートの利点は次のとおりです。
- コーディングと理解が簡単です。
- アルゴリズムを実装するには、数行のコードが必要です。
- 並べ替えはインプレースで実行されます。つまり、追加のメモリは必要ないため、メモリのオーバーヘッドは発生しません。
- ソートされたデータはすぐに処理できます。
結論
これまで、Javaでのバブルソートソートアルゴリズムについて説明してきました。また、バブルソート手法を使用して配列をソートするアルゴリズムと詳細な図についても説明しました。次に、Javaプログラムをバブルソートに実装しました。
次のチュートリアルでは、Javaの他のソート手法を続行します。
=> ここですべてのJavaチュートリアルを確認してください。