简体   繁体   中英

How do I count the number of occurrences in an array?

I have generated an array of 5 random integers from 1-5. Here is what the array looks like now: myArray[5] = {3, 3, 1, 4, 5}

I have now sorted the array of 5 integers in ascending order, from least to greatest.

myArray[5] = {1, 3, 3, 4, 5}

I now need to count the number of occurrences a specific integer has and make a table of it.

Such as:

Number: Count: 
1:1 
2:0 
3:3 
4:0 
5:1

The farthest I've gotten has been looping through the array. I am having a hard time talling the numbers and creating a count of how many occurances there are.

Not using any maps, or iterations, etc. I am trying to get this count. Here is what I have tried already:

int counts[10];

for (int x = 0; x <= 10; x++){
    int counter = 0;
    for (int j = 0; j < ARRAY_SIZE; j++){
        if (x == myArray[j]){
            counts[x] == counter++;
        }
    }

    cout << "Number: " << x << "Number of Occurances: " << counts[counter]<< "\n";
}

However, my output is incredibly wrong.

Use a std::map to map integers to their counts.

std::map<int, int> counts;
for (int i = 0; i < 5; i++) {
    counts[myArray[i]]++; // increment the counter for the current value
}

Now you can print the keys and values in counts . See How to loop through a C++ map of maps? for how to do this.

You can do it with an array instead of a map. The only difference is that it won't automatically expand to handle larger values (unless you use malloc and realloc to make it dynamically sized).

#define MAX_VALUE 9
int counts[MAX_VALUE+1] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
for (int i = 0; i < ARRAY_SIZE; i++) {
    if (myArray[i] <= MAX_VALUE) {
        counts[myArray[i]]++; // increment the counter for the current value
    }
}
for (int j = 0; j <= MAX_VALUE; j++) {
    cout << "Number: " << j << "Number of Occurances: " << counts[j] << endl;
}

Make a hash and initialize with zero.

int hash[10000]={0};
for(int i=0;i<n;i++)
{  
     hash[arr[i]]++;
}

the hash at index arr[i] will hold value which is the count of occurrence of that number. As hash[arr[i]]++ will increment the count at index equal to the value of arr[i]. This way we can check which value occurred how many times by checking hash[arr[i]] where arr[i] is value to be checked.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM