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