C言語を使用した配列内の各要素の出現頻度をカウントする方法


方法1: ネストされたループを使用する方法

#include <stdio.h>
int main() {
    int arr[] = {1, 2, 3, 3, 2, 1, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    for (int i = 0; i < size; i++) {
        int count = 1;
        for (int j = i + 1; j < size; j++) {
            if (arr[i] == arr[j]) {
                count++;
                // 出現した要素をマークするために重複を避けるために-1に設定
                arr[j] = -1;
            }
        }
        if (arr[i] != -1) {
            printf("%d は %d 回出現します\n", arr[i], count);
        }
    }
    return 0;
}

方法2: ハッシュマップを使用する方法

#include <stdio.h>
#define MAX_SIZE 100
void countFrequency(int arr[], int size) {
    int freq[MAX_SIZE] = {0};
    for (int i = 0; i < size; i++) {
        freq[arr[i]]++;
    }
    for (int i = 0; i < size; i++) {
        if (freq[arr[i]] != 0) {
            printf("%d は %d 回出現します\n", arr[i], freq[arr[i]]);
            freq[arr[i]] = 0;
        }
    }
}
int main() {
    int arr[] = {1, 2, 3, 3, 2, 1, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    countFrequency(arr, size);
    return 0;
}

以上のコード例では、与えられた配列内の各要素の出現頻度をカウントするために、ネストされたループやハッシュマップを使用しています。どちらの方法も効率的であり、要素の出現頻度を正確にカウントすることができます。

このブログ投稿では、配列内の要素の出現頻度をカウントする方法について詳しく説明し、さまざまなアプローチを提供しました。読者はこれらのコード例を使用して、C言語で要素の出現頻度をカウントする方法を学ぶことができます。