ホームページ Java &#&チュートリアル Java クラシック アルゴリズム バブル ソート コード共有

Java クラシック アルゴリズム バブル ソート コード共有

Mar 05, 2017 pm 12:10 PM
java バブルソート

原題: Java の古典的なアルゴリズム: バブルソート (バブルソート)

バブルソートとは何ですか?

バブル ソートは、順序に基づいて要素をペアごとに比較する単純な並べ替えアルゴリズムです。順序が大から小の場合、2 つの要素が相互に比較されると、大きい方が最初にランク付けされ、そうでない場合は、大きい方が後にランク付けされます。バブル選別は大から小への選別と小から大への選別に分かれます。

原則: 2 つの隣接する要素を比較し、値が大きい方の要素を右端に入れ替えます。

アイデア: 2 つの隣接する数値を順番に比較し、小数を前に、大きい数値を後ろに置きます。つまり、最初のパスでは、まず 1 番目と 2 番目の数値を比較し、小数点を前に、大きな数値を後ろに置きます。次に、2 番目の数値と 3 番目の数値を比較し、小数を前に、大きな数値を後ろに置きます。最後の 2 つの数値を比較するまで同様に、小数を前に、大きな数値を後ろに置きます。すべての並べ替えが完了するまで、最初の手順を繰り返します。

例: 配列をソートするには: int[] arr={6,3,8,2,9,1};

最初のソート:

最初のソート: 6 363より大きい、交換位置: 3 6 8 2 9 1

2番目の並べ替え: 6 8 比較: 6は、位置を交換せずに8より小さい: 3 6 8 2 9 1

3番目の並べ替え: 82 比較してください 82より大きい、位置を入れ替える: 3 6 2 8 9 1

89より小さい より大きい1 、位置の交換: 3 6 2 8 1 9 最初のトリップで合計 5

の比較が行われ、ソート結果:

3 6 2 8 1 9

------------------------------------------------- --------------------

2回目の並べ替え:

1回目の並べ替え: 363 の比較は6より小さい、位置を交換せず: 3 6 2 8 1 9

2番目の並べ替え: 62の比較、 6 より大きい2、位置交換: 3 2 6 8 1 9

3番目の並べ替え: 68の比較、6より大きい8、位置の交換なし: 3 2 6 8 1 9

4番目の並べ替え: 81を比較すると、81より大きい、位置を交換します: 3 2 6 1 8 9

2 回目の旅行では、合計 4 の比較が実行され、ソート結果は次のとおりです: 3 2 6 1 8 9

--- ---------------------------------------------------- ------- --------

3回目の並べ替え:

1回目の並べ替え: 32を比較すると、3より大きい2、位置を交換: 2 3 6 1 8 9

2番目の並べ替え: 36を比較すると、3の方が少ない6より 、位置を交換しないでください: 2 3 6 1 8 9

3番目の並べ替え: 61を比較すると、61より大きく、位置を入れ替えます: 2 3 1 6 8 9

2つ目合計 3 の比較が行われ、 並べ替え結果: 2 3 1 6 8 9

---------------------- -------------------------------------------------- --

4 回目の並べ替え:

最初の並べ替え: 23 を比較すると、 2 3 より小さく、位置は交換されません: 2 3 1 6 8 9

2 番目の並べ替え: 31 を比較すると、31 より大きいため、位置を交換します。 2 1 3 6 8 9 2回目の旅行は合計で

2

の比較、の並べ替え結果: 2 1 3 6 8 9----------------- ------------ -------------------------------------- --

5回目の並べ替え:

最初の並べ替え: 2

1を比較すると、21より大きく、位置を入れ替えます: 1 2 3 6 8 9 2 回目の旅行 合計

1

の比較が行われ、 並べ替え結果: 1 2 3 6 8 9-------------- ------------ -------------------------------------- -------------

最終結果:

1 2 3 6 8 9

------ ------------------------ ------------------------ --------

次のことがわかります:

N

個の数値を並べ替える必要があり、合計 N-1 の並べ替え、各 i の並べ替えの数時間は(N-i)回なので、二重ループステートメントを使用できます。外側の層はループの回数を制御し、内側の層はそれぞれの回数を制御します。つまり、


for(int i=1;i<arr.length;i++){

    for(int j=1;j<arr.length-i;j++){

    //交换位置

}
ログイン後にコピー


バブルソートの利点: ソートが実行されるたびに、より大きな値が見つかるため、比較が 1 つ少なくなります。上の例のように、最初の比較の後、最後の数値が最大の数値である必要があります。2 回目の並べ替えでは、最後の数値を除く他の数値を比較するだけでよく、数値はランク付けされます。 3 番目の比較では、最後の 2 つの数値を除く他の数値のみを比較する必要があります。つまり、比較を行わないと、毎回の旅行ごとに比較が 1 つ減ります。ある程度のアルゴリズムの量。

時間の複雑さの観点から:

1. データが整っていれば、並べ替えを完了するのに 1 回の移動だけで済みます。必要な比較数 とレコード移動数 は両方とも最小値に達します: Cmin=n-1; したがって、バブルソートの最適な時間計算量は O です。 (n)。

2. 残念ながらデータが逆順の場合は、n-1の並べ替えを実行する必要があります。各ソート パスには n-i 比較(1≤i≤n-1) が必要で、各比較でレコードを 3 回移動して交換レコードの位置を取得する必要があります。この場合、比較と移動の数は最大値に達します: バブルソートの最悪の時間計算量は: O(n2)です。

要約すると、バブルソートの合計平均時間計算量は O(n2)です。

Java クラシック アルゴリズム バブル ソート コード:

/*
 * 冒泡排序 */public class BubbleSort {
  public static void main(String[] args) {
    int[] arr={6,3,8,2,9,1};
    System.out.println("排序前数组为:");
    for(int num:arr){
      System.out.print(num+" ");
    }
    for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数      for(int j=0;j<arr.length-1-i;j++){//内层循环控制每一趟排序多少次        if(arr[j]>arr[j+1]){
          int temp=arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
        }
      }
    } 
    System.out.println();
    System.out.println("排序后的数组为:");
     for(int num:arr){
       System.out.print(num+" ");
     } 
  }
 }
ログイン後にコピー

Java クラシック アルゴリズム バブル ソートの詳細については、php 中国語 Web サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Feb 07, 2025 pm 12:11 PM

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。

See all articles