C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でカウントソートを使用した中央値と最頻値


サイズnの配列があるとすると、カウントソート手法を使用して中央値と最頻値を見つける必要があります。この手法は、配列要素が限られた範囲にある場合に役立ちます。要素が{1、1、1、2、7、1}であり、最頻値が1、中央値が1.5であるとします。中央値とは何か、最頻値とは何かを見てみましょう-

  • 中央値は、並べ替えられた数値リストの中央値です
  • モードは、リスト内で出現回数が最大の要素です

中央値と最頻値を取得するには、次の手順に従う必要があります-

  • 入力配列のサイズがnであると想定します
  • 前のカウントを次のインデックスに合計する前に、カウント配列を取得します
  • 格納されている最大値のインデックスは、指定されたデータのモードです。
  • 複数の最大要素が存在する場合は、そのうちの1つを取ることができます
  • 値をmodeという名前の別の変数に格納します 。
  • カウントソートの通常の処理を続行します。
  • 並べ替えられた配列で、nが奇数の場合、中央値は並べ替えられた配列の真ん中の要素であり、nが偶数の場合は、真ん中の2つの要素を取り、それらの平均を求めて中央値を取得します。
  • 値をmedianという名前の別の変数に格納します。

#include <iostream>
using namespace std;
bool isRepresentedInDDigits(int num, int d, int base) {
   if (d==1 && num < base)
      return true;
   if (d > 1 && num >= base)
      return isRepresentedInDDigits(num/base, --d, base);
      return false;
}
bool checkNumber(int num, int d) {
   // Check for all bases one by one
   for (int base=2; base<=32; base++)
   if (isRepresentedInDDigits(num, d, base))
   return true;
   return false;
}
int main() {
   int num = 8;
   int dig = 2;
   if(checkNumber(num, dig))
      cout << "Can be represented";
   else
      cout << "Can not be represented";
}

出力

Can be represented

  1. カウントソートを実装するC++プログラム

    カウントソートは安定したソート手法であり、少数のキーに従ってオブジェクトをソートするために使用されます。キー値が同じキーの数をカウントします。この並べ替え手法は、異なるキー間の差がそれほど大きくない場合に効率的です。そうでない場合は、スペースが複雑になる可能性があります。 ソート手法のカウントの複雑さ 時間計算量:O(n + r) スペースの複雑さ:O(n + r) 入力 −ソートされていないデータのリスト:2 5 6 2 3 10 3 6 7 8 出力 −並べ替え後の配列:2 2 3 3 5 6 6 7 8 10 アルゴリズム countingSort(array、

  2. ヒープソートアルゴリズムを使用して10個の要素の配列をソートするC++プログラム

    ヒープソートは、バイナリヒープデータ構造に基づいています。バイナリヒープでは、親ノードの子ノードは最大ヒープの場合はそれ以下であり、親ノードの子ノードは最小ヒープの場合はそれ以上です。 ヒープソートのすべてのステップを説明する例は次のとおりです。 並べ替え前の10個の要素を含む元の配列は-です 20 7 1 54 10 15 90 23 77 25 この配列は、max-heapifyを使用してバイナリ最大ヒープに組み込まれています。配列として表されるこの最大ヒープは、次のように与えられます。 90 77 20 54