ホームページ  >  記事  >  Java  >  Javaでソートをカウントする

Javaでソートをカウントする

WBOY
WBOYオリジナル
2024-08-30 15:58:331120ブラウズ

カウンティング ソートは、どのプログラミング言語でも重要な役割を果たすアルゴリズムであり、Java も同様です。カウンティングソートアルゴリズムの主な目的は、アルゴリズムをソートするための小さな整数として存在するキーに従ってオブジェクトコレクションをソートすることです。これは主に、キーと値のペアのカウントを操作して実行し、出力シーケンスに従って要素の位置を示します。  この並べ替えの実行時間は項目に関して線形であり、キー値の差は最大値と最小値の間にあります。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構文

Java でカウント ソートを実行するための特定の構文はありませんが、入力に従ってカウント ソートを実行するアルゴリズムの形式で段階的に適用されるロジック フローがあり、次のように表されます。

Class name {
Method name following sorting ()
{
# Find the length of array defined;
#the output character array will have sorted array
#Create a count arr to store count of each element, characters and initialize it 0
#Store count of each character element in the array
#Build output character and write the logic to make it operated in reverse order
#that builds output can now be copied from the previous array to the current
#Make use of the driver code to move and proceed.
}

Java でのカウントソートはどのように機能しますか?

  • 前述したように、カウンティング ソート アルゴリズムはプログラミングにおいて重要な役割を果たします。これは、収集された形式で存在するオブジェクトの並べ替えに使用され、個別のキーと値のペアを持つ存在する要素の数をカウントするために使用され、また、各キーと値を持つ存在する各要素の位置を決定する算術カウントとともに使用されます。最小値と最大値の差。
  • チェックされている場合の実行時間または時間計算量は、配列内のすべての要素と最小キー値と最大キー値の差を含む本質的に線形であるため、これらの要素とソート手法は、キーが変化する場合に直接使用する場合に適しています。必要なキーを持つ要素より大幅に大きいことはありません。
  • ほとんどのキー処理をサポートできる別のアルゴリズムがありますが、要件に従ってソートをカウントするほど効率的ではなく、ハッシュを基数ソートに置き換えて、以前と比較して大量のキーの状況を処理できます。 .
  • カウントソートは配列のインデックス値の一部としてキーと値のペアを使用するため、比較ソートとはみなされません。また、比較ソートの下限は許可されません。
  • バケット ソートには、同じタスク セットと同様の時間分析の場合にのみ過少カウント ソートも含まれますが、カウント ソートと比較すると、その時点でバケット ソートには動的配列、リンク リスト、または保持するために大量のメモリが必要です。バケット内に存在する要素をカウントして並べ替えると、バケットごとに個別の単一の数値である値のみが保存されます。
  • カウントソートへの入力が n 個の項目のコレクションで構成され、各項目が k として何らかの値を持つ最大値の非負の整数のキー値を持つという事実に基づく、特定の入力および出力の仮説シーケンスがあります。カウンティング ソートの説明の一部は、単純に線形形式の整数シーケンスをソートするための入力です。
  • 配列の出力は、ほとんどの場合、何らかの順序のキーを持つ主要な項目で構成されませんが、その使用は要件に関してチェックする必要があります。
  • Sort のカウントに関する時間計算量は O (n+l) になります。ここで、n は要素の数、l は入力を考慮する範囲です。
  • また、補助空間は O(n+l) のみであることがわかります。

Java でのカウントソートの例

このプログラムは、Java でのソートの一部として設定された入出力シーケンスの一部を考慮することにより、カウントソートを示します。

コード:

public class Counting_Sort_1{
void sort_0(char arr_0[])
{
int n_8 = arr_0.length;
char output_val[] = new char[n_8];
int count_0[] = new int[528];
for (int l_0 = 0; l_0 < 528; ++l_0)
count_0[l_0] = 0;
for (int y_1 = 0; y_1 < n_8; ++y_1)
++count_0[arr_0[y_1]];
for (int l_0 = 1; l_0 <= 526; ++l_0)
count_0[l_0] += count_0[l_0 - 1];
for (int l_0 = n_8 - 1; l_0 >= 0; l_0--) {
output_val[count_0[arr_0[l_0]] - 1] = arr_0[l_0];
--count_0[arr_0[l_0]];
}
for (int l_0 = 0; l_0 < n_8; ++l_0)
arr_0[l_0] = output_val[l_0];
}
public static void main(String []args){
Counting_Sort_1 ob = new Counting_Sort_1();
char arr_0[] = { 's', 'a', 'r', 'c', 's', 'f', 'o',
'i', 'n', 'c', 'a', 'r', 'm' };
ob.sort_0(arr_0);
System.out.print("Sorted_character_array_in_Counting_Sort ");
for (int l = 0; l < arr_0.length; ++l)
System.out.print(arr_0[l]);
}
}

出力:

Javaでソートをカウントする

説明

上記の例では、Java でカウントソートを実装しており、適切に実行するために次の手順が実行されています。

  • Selection_Sort_0 を持つクラスが作成され、クラスへの入力セットが続きます。
  • クラスが作成されると、ソートされた配列を持つ文字配列を保存するためのメソッドが作成されます。
  • 値をキーと値のペアの形式で独立したエンティティとして保存するという意味でのカウント配列の作成。さらに、カウントとして char の形式で保存されます。
  • カウントの変更は、実際の値と出力配列内の現在の文字の位置をカウントするために必要です。
  • 文字のセットを使用して出力配列を構築し、安定して逆の順序で操作できるようにします。
  • ソートされた配列を現在の配列にコピーして、何らかの方法で配列をソートします。
  • ドライバー コードは、コード ベース全体をさらに駆動して入力ソースから出力を取得するために実行されます。

結論

カウントソートは、ソート用の要素の範囲で構成される配列に適用されるソートアルゴリズムの一種です。並べ替えは、配列内に存在するキーと値のペア、または最小値または最大値の差に基づいて行われます。カウンティング ソートは、整数値を一括して使用する実装が必要な場合に、開発者に多くの助けを提供します。

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

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