Ich möchte einen Algorithmus schreiben, der die n-te häufigste Zahl in einem Array findet. Ich habe eine Lösung, aber nicht optimal (Testnummern habe ich bereits getestet) Ich frage mich, ob es eine optimale Lösung gibt? Hier ist meine Lösung:Algorithmus, der die N-te häufigste Zahl im Array findet
most_freq_element(a,n){
final_cnt = 0, curr_cnt = 1, final_freq_num = -1, curr_freq_num = -1;
for(i = 0; i < n-1; i++)
{
if (a[i]!=-1){
curr_freq_num = a[i];
for(j =i+1; j < n; j++){
if(curr_freq_num == a[j] && final_freq_num != curr_freq_num){
curr_cnt++;
}
}
if(final_cnt < curr_cnt){
final_cnt = curr_cnt;
curr_cnt = 1;
final_freq_num = curr_freq_num;
}
}
}
printf("Num = %d and times = %d", final_freq_num, final_cnt);
}
nth_most_frequent_element(a,n,k){
if(k==1){
return most_freq_element(a,n);
}
else{
for (i=0;i<k;i++){
int most_freq_num = most_freq_element(a,n);
for(i = 0; i < n-1; i++){
if (a[i]==most_freq_num){
a[i]=-1;
}
}
}
return most_freq_element(a,n);
}
}
Mögliche Duplikate von [Finden Sie die N-te häufigste Nummer im Array] (https://stackoverflow.com/questions/10965952/find-the-n-th-most-frequent-number-in-the- Array) –