私は、その配列とその長さをパラメータとして使用して、配列に含まれる整数セットのモードを見つける関数を書く方法についていません。私は配列のモードを見つける方法についてオンラインで複数のソリューションを見つけましたが、私は次のようにこの問題を解決しようとしています。ダブルアレイを使用してモードを見つけるには?
元の配列には(0、0、1、5、5 、5,7,7,7)。私は、モードを保存せずにどのような量でも最高の周波数を見つけるループを使って配列を反復し、これらの周波数を別の配列に格納したいとします。この場合、新しい配列は値(1,2,1、 1,2,3,1,2,3)。 2番目の配列の最大値を見つけることによって、私はこの場合3である最も高い周波数を見つけるでしょう。次に、元の配列を繰り返し処理し、最も高い頻度とその配列内の各値の数を比較し、一致がある場合、その値を返します。この例では5と7です。与える。ここでの基準を考えれば、与えられた配列のモードを見つけるためにこの関数をどのように書くのでしょうか? (配列がすでに昇順にソートされていると仮定できます)。
編集:私の暫定コードです。私は、元の配列の各整数の周波数を見つけ、別の配列に格納するステップまで行っています。
void findMode(int array, int size){
int count = 1;
int freq[size];
freq[0] = count;
for (int pass = 1; pass < size; pass++){
if (array[pass] == array[pass-1]){
count++;
freq[pass] = count;
}
else{
count = 1;
freq[pass] = count;
}
}
'のstd ::ソート(array.begin()、array.end());'それらはまず、その後反復。 –
キーを整数として、値をその出現としてマップを使用する方法について説明します。同じキーを再度表示するたびに、値を増やします。 全体を反復しない限り、どのように最大値を決定するかはわかりませんが、 編集:この質問はここでは同じことを示していますhttp://stackoverflow.com/a/9370990/1083027最大の実行カウントを維持する –
待って、なぜこれをしたいですか?リスト内の最も高い数値と等しい値のリストを保持し、最大値よりも高い値を見つけたらそれを拭き取ってみませんか? –