私は現在、プロジェクトに取り組んでおり、C配列の中で2番目に出現頻度の低い要素を特定するために必要な部分の1つについて作業しています。 【】入力された配列であり、iはint型ARRC配列内の2番目に出現頻度の低い要素
int minRepeat(int arr[], int i){
int j = 0;
int l = 0;
int minimum = 100;
int minNum = 0;
for(j = 0; j < i; j++){
int m = 0;
for(l = 0; l < i; l++){
if(arr[j] == arr[l]){
m++;
}
}
if(m < minimum){
minimum = m;
minNum = arr[j];
}
}
return minNum;
}
:いずれの場合では、アレイ内の要素の最大数は、私が最も発生要素を見つけるために、既に書き込まれた機能を持っている100になるだろうその配列のサイズ
私は、C配列に2番目に出現している要素を見つける関数を作成しようとしています。現在のところ、関数は次のとおりです。
int secMin(int arr[], int i){
int j = 0;
int l = 0;
int minimum = 0;
int minNum = 0;
int q = 0;
int k = minRepeat(arr, i);
for(q = 0; q < i; q++){
if(arr[q] == k){
minimum++;
}
}
int minimum2 = 100;
for(j = 0; j < i; j++){
int m = 0;
for(l = 0; l < i; l++){
if(arr[j] == arr[l]){
m++;
}
}
if(m < minimum2){
if(m > minimum){
minimum2 = m;
minNum = arr[j];
}
}
}
return minNum;
}
私は、最も少ない要素を見つけるために最初の関数を呼び出しています。その要素が配列内で何回出現したかを調べ、最初の関数と同じことをして最小のものを見つけますが、最後の最初の要素と比較してこの要素が2番目であることを確認します少なくとも発生する。
arr [] = {1,1,1,2,2,3,2,4,4,1} の場合、発生頻度は3、2番目の発生数は1になります。 場合によっては、関数は他の入力と連動し、時にはそうでない場合もあります。
ありがとうございました!
ヒストグラムを作成してソートし、SortedHisto [1]を選択するだけです。完了しました。 – DevNull
@Dogbertこれを実装しようとしていただきありがとうございます – user4072905
いいですね。また、将来n番目に小さい/大きい値、または同様のメトリックを見つける必要がある場合は、余分な中間値を追加する必要はありません。 – DevNull