ホームページ >Java >&#&チュートリアル >Java Hillソートの例の詳細な説明

Java Hillソートの例の詳細な説明

Y2J
Y2Jオリジナル
2017-05-13 11:10:422046ブラウズ

この記事では、主にヒルソートのJavaデータ構造とアルゴリズムを紹介し、サンプルの形でヒルソートの概念、原理、実装方法、および関連する注意事項を分析します。必要な友人はそれを参照できます

この記事の例。データ構造とアルゴリズムの Java Hill ソートについて説明します。参考までに皆さんと共有してください。詳細は以下の通りです:

ここで紹介したいのは、ヒルソート(縮小増分ソート法)です。

ヒルソート: 間隔をあけて配置された要素を比較することで機能します。アルゴリズムが進行するにつれて、最後の並べ替えパスで隣接する要素のみが比較されるまで、各比較に使用される距離 (増分) が減少します。これは挿入ソートの一種であり、直接挿入ソート アルゴリズムを改良したものです。

アルゴリズムのアイデア: まず、ソート対象のシーケンスを特定の増分 d に従っていくつかのサブシーケンスに分割し、各サブシーケンス内のすべての要素に対して直接挿入ソートを実行し、その後、より小さい増分を使用して グループ化 してからソートします。各グループ。増分が 1 になると、ソート対象の数値全体が 1 つのグループに分割され、ソートが完了します。注: 増分の値 - 通常、最初はシーケンスの半分が増分として取得され、その後は増分が 1 になるまで毎回半分になります。

アルゴリズムの実装コードは次のとおりです:


package exp_sort;
public class ShellSort {
  public static void shell(int array[]) {
    int j;
    int average;
    //设置增量的值
    for (average = array.length / 2; average > 0; average /= 2) { //步长
      for (int i = average; i < array.length; i++) { //子序列进行直接插入排序
        int temp = array[i];
        for (j = i; j >= average && temp < array[j - average]; j -= average) {
          array[j] = array[j - average];
        }
        array[j] = temp;
      }
    }
    for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
    }
    System.out.println("\n");
  }
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    int array[] = { 38, 62, 35, 77, 55, 14, 35, 98 };
    shell(array);
  }
}

アルゴリズム分析: このアルゴリズムは、要素が最初に非常に無秩序である場合、ステップ サイズが最大になり、異なるステップ サイズに従って要素を挿入および並べ替えます。要素が基本的に順序付けされており、ステップ サイズが小さい場合、挿入ソートは順序付けされたシーケンスに対して非常に効率的です。したがって、Hill ソートの時間計算量は O(n^2) よりも優れており、O(n^1.5) となり、ソート効率は挿入ソートよりもはるかに高くなります。複数の挿入ソートにより、1 つの挿入ソートは安定しており、同じ要素の相対的な順序は変更されないことがわかっています。ただし、異なる挿入ソート プロセスでは、同じ要素がそれぞれの挿入ソートで移動する可能性があり、最終的には安定性が低下します。変更が中断されているため、シェルのソートが不安定ですヒルソートはクイックソートアルゴリズムO(N*(logN))ほど高速ではないため、中規模のデータのソートにはより適していますが、非常に大規模なデータのソートには最適な選択肢ではありません。ただし、O(N^2) 複雑度アルゴリズムよりもはるかに高速です。また、ヒル ソートは実装が非常に簡単で、アルゴリズム コードは短くてシンプルです。 さらに、最悪の場合のヒルのアルゴリズムのパフォーマンス効率と平均的な場合の差はそれほど大きくありませんが、最悪の場合のクイック ソートの効率は非常に低くなります。

【関連推奨事項】

1. 特別な推奨事項: 「php Programmer Toolbox」V0.1バージョンのダウンロード

2. YMPオンラインマニュアル

以上がJava Hillソートの例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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