シンプルなソートアルゴリズム
現在の IT 業界は、以前ほど簡単ではありません。従業員が多すぎるため、若手プログラマーが余ってしまいます。これは間接的に、企業の採用基準がますます高くなり、プログラマーを必要とすることにもつながっています。より多くの知識を習得すること。
#アルゴリズムも長い間議論されてきたテーマですが、プログラマーはアルゴリズムを習得する必要がありますか?人によって答えは異なります。実際、多くの企業ではアルゴリズムに特定の要件を設けており、面接中に面接官にアルゴリズムの質問を直接手書きで要求する企業もあります。これはプログラマーの技術的要件に大きな試練を与えるため、今日の環境に直面して、将来の仕事に就くためにはアルゴリズムを習得する必要があります。
それでは、次に、いくつかの並べ替えアルゴリズムを簡単に紹介します。お役に立てれば幸いです。
バブル ソート
バブル ソート (バブル ソート) は、比較的単純な並べ替えアルゴリズムです。
ソート対象の要素の列を繰り返し訪問し、隣接する 2 つの要素を順番に比較し、順序 (大きいものから小さいもの、A から Z の最初の文字など) が間違っている場合はそれらを入れ替えます。要素を訪問する作業は、隣接する要素を交換する必要がなくなるまで繰り返されます。これは、要素列がソートされたことを意味します。
このアルゴリズムの名前は、炭酸飲料の二酸化炭素の泡が最終的には泡になるのと同じように、より大きな要素が交換 (昇順または降順) によってシーケンスの先頭にゆっくりと「浮く」という事実に由来しています。一番上にフロートするため、「バブル ソート」という名前が付けられています。
デモ:
コードは次のとおりです:
@Test public void bubbleSort() { int[] arr = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 }; // 统计比较次数 int count = 0; // 第一轮比较 for (int i = 0; i arr[j + 1]) { // 交换位置 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } count++; } } System.out.println(Arrays.toString(arr)); System.out.println("一共比较了:" + count + "次"); }
実行結果:
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50] 一共比较了:105次
Select sort
選択ソートは、シンプルで直感的な並べ替えアルゴリズムです。その動作原理は、まずソートするデータ要素から最小 (または最大) の要素を選択し、それをシーケンスの先頭に格納し、次にソートされていない残りの要素から最小 (最大) の要素を見つけて配置します。ソートされたシーケンスの最後。ソートされるすべてのデータ要素の数がゼロになるまで、同様に続きます。選択ソートは不安定なソート方法です。
デモ:
コードは次のとおりです:
@Test public void SelectionSort() { int[] arr = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 }; for (int i = 0; i <p>実行結果: </p><pre class="brush:php;toolbar:false">[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
実装も次のとおりです。非常に単純です。まず第一に、インデックス変数は、i の値を格納するために外側のループで定義されます。これは、比較の各ラウンドの後、最初の i 要素がすでに並べ替えられているため、繰り返しの比較を避けるためです。もう一度比較して、「Just start i」から始めてください。以降の比較はすべてインデックス位置の要素に基づいて行われます。比較後のインデックス位置の要素が最小値の場合は、交換する必要はなく、移動しないでください。そして、インデックスの要素より小さい要素が見つかった場合は、その要素のインデックスをインデックスに代入し、比較が完了するまで比較を続けます。比較が完了した後に得られるインデックスは配列の最小値であり、このとき、インデックス位置の要素を位置 i の要素と交換するだけです。
挿入ソート
挿入ソートは、シンプルで直感的で安定した並べ替えアルゴリズムです。すでにソートされたデータ列があり、ソートされたデータ列に数値を挿入する必要があるが、挿入後もデータ列がまだ順序付けされている場合は、新しいソート方法である挿入が必要です。挿入ソートは、ソート済みの順序付きデータにデータを挿入し、数値に 1 を加えた新しい順序付きデータを取得するアルゴリズムです。このアルゴリズムは、少量のデータのソートに適しています。計算量は O(n ^2)。安定した選別方法です。挿入アルゴリズムは、ソートされる配列を 2 つの部分に分割します。最初の部分には、最後の要素を除く配列のすべての要素が含まれます (配列に挿入位置を追加するためのスペースが 1 つ増えます)。2 番目の部分には、この要素のみが含まれます。 1 つの要素 (つまり、挿入される要素)。最初の部分がソートされた後、この最後の要素がソートされた最初の部分に挿入されます。
挿入ソートの基本的な考え方は次のとおりです。各ステップで、ソート対象のレコードが、キー値のサイズに従って、すべてが挿入されるまで、前にソートされた配列内の適切な位置に挿入されます。
デモ:
コードは次のとおりです:
@Test public void InsertionSort() { int[] arr = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 }; for (int i = 1; i = 0 && insertValue <p>実行結果:</p><pre class="brush:php;toolbar:false">[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
ここでは、配列要素 よくわからないので、配列の最初の要素を順序付けされたシーケンスとみなすことしかできません。そのため、挿入位置を見つける必要がある要素は配列の 2 番目の要素から始まります。したがって、外側のループは 1 から開始し、現在の 2 番目の要素である arr[i] を保存し、挿入される要素の前の要素の添え字 (i-1) を見つけます。このとき、while ループを通過します。比べる。
insertIndex が 0 未満の場合、前のすべての要素と比較されているため、ループを終了する必要があります。比較処理中に、挿入される要素が前の要素より小さい場合、前の要素は後方に移動されます。つまり、前の要素の値が挿入される要素の位置に直接割り当てられます。挿入する要素は最初に保存されているため、挿入する要素の値を前の要素に代入するだけで済みます。 insertIndex は while ループ内で自己減分操作を実行するため、その前の要素の添字は insertIndex 1 である必要があります。また、挿入される要素の値が前の要素よりも大きい場合は、while ループに入らないため、insertIndex 1 以降の位置は依然として独自の位置であるため、代入後も値は変わりません。後続の操作でも同様です。
以上がシンプルなソートアルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。
