配列要素の頻度を計算する JavaScript プログラム

WBOY
リリース: 2023-09-21 08:01:03
転載
1134 人が閲覧しました

用于计算数组元素频率的 JavaScript 程序

頻度を計算するということは、配列内の要素が指定された配列に出現する回数をカウントする必要があることを意味します。マップのような組み込みデータ構造を使用して頻度を取得したり、配列をソートして配列要素の頻度を取得したりできます。両方の方法について説明します。1 つずつ見てみましょう -

配列を並べ替える

このメソッドでは、配列をソートし、現在の要素が前の要素と同じかどうかを確認します。現在の配列が同じでない場合、これが新しい要素であり、カウントがゼロになるまで前の要素の頻度になります。要素の数を増やすために使用する変数。

###方法###

    まず、組み込みの並べ替えメソッドを使用して配列を並べ替えます。
  • 指定された配列内の要素とそれぞれの周波数を格納する配列を作成します。
  • 現在の要素の出現回数を保存する変数「count」を作成します。
  • 配列を反復処理し、各反復で現在の要素が前の要素と等しいかどうかを確認します。
  • 現在の要素が前の要素と等しい場合、カウント値を増やします。
  • 現在の要素が前の要素と等しくない場合は、前の要素のカウントを、現在の要素の頻度を示すキー ペアとして配列に保存します。
  • 李>また、カウント値を 1 に更新します。
  • 配列を反復した後、ソートされた配列の最後の要素の頻度を保存します。これは保存されず、ループが終了します。
  • ###例###
  • 上記のメソッドを実装するコードを見て、さらに詳しく理解できるように追加してみましょう。
リーリー

時間と空間の複雑さ

上記のコードの時間計算量は O(N*log(N)) です。配列をソートしており、必要な時間は N*log(N) であり、配列を 1 回走査しているため、O が必要です。 (N ) 時間。N は指定された配列に存在する要素の数です。

余分なスペースを使用していないため、上記のコードのスペース複雑さは O(1) ですが、周波数を保存したい場合は、余分なスペースがあり、それが O(N) になります。

マップのすべての要素が使用される頻度

マップは値をキーペアの形式で保存するデータ構造であり、データは後で更新できます。マップ内のデータの追加または更新には対数的な時間がかかりますが、配列を並べ替える必要はありません。つまり、前のプログラムのように配列を変更する必要がありません。まずメソッドを見てから、エンコード部分に入ります -

###方法###

まず、新しいキーワードを使用してマップを作成します。

    配列を反復処理して各要素を確認します。
  • 現在の要素がマップ内に存在する場合、現在の要素に保存されている値 (頻度) が増加します。
  • 要素が保存されていない場合は、それをキーとしてマップに追加し、値 1 を与えます。
  • 配列を反復処理した後、マップに格納されている値をキーと値のペアとして出力できます。
  • ###例###
  • コードがどのように実装されるかを確認しました。次に、コードをよりよく理解するために実装部分に移りましょう -
  • リーリー

    時間と空間の複雑さ

  • 上記のコードの時間計算量は O(N*log(N)) です。ここで、N は、マッピングの動作に応じて配列、因数、または対数のサイズです。上記のコードの空間複雑さは O(N) で、マップに要素を格納する必要があります。

マップを使用して周波数を見つけるのは、指定された配列を変更する必要がないため便利です。

###結論は###

このチュートリアルでは、配列要素の頻度を計算するための JavaScript プログラムを紹介します。頻度を計算するということは、配列内の要素が特定の配列に出現する回数をカウントする必要があることを意味します。与えられた問題を解決する 2 つの方法を見てきました。1 つは組み込みの並べ替え関数を使用して要素を並べ替える方法で、もう 1 つは組み込みのマップ データ構造を使用してそれを行う方法です。

以上が配列要素の頻度を計算する JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート