zliczanie wartosci wystepujacych w tablicy

0

Witam, mam pytanie pod konkretny przykład, mam tablice n elementowa, zalozmy ze będzie to 5 elementow gdzie wprowadzone zostaje {1,3,1,4,2}
chciałbym żeby wypisywalo mi : liczba 1 wystepuje 2 razy, liczba 3 - 1 raz, liczba 4 - 1 raz, liczba 2-1 raz. Napisalem kod, zlicza mi lecz wypisuje liczba 1-2, 3-1, 1-1, 4-1, 2-1. Pytanie, jak można np. pominąć element powtarzający się w tablicy, lub ewentualnie usunąć uzyta już liczbe. Odpada sortowanie.

0
#include <map>
#include <iostream>
using namespace std;

int main(){
    int tab[] = {1, 3, 1, 4, 2};
    map<int, size_t> occurs;
    for(auto item : tab)
        occurs[item] += 1;
    
    for(auto pair : occurs)
        cout << pair.first << ": " << pair.second << endl;
}
0

będę w bledzie jeżeli powiem ze w c z takimi zabawkami ciężko ?

1

O ile znasz zakres liczb (i nie są to jakieś gigantyczne przedziały) to dokładnie ten sam algorytm można łatwo powtórzyć w C.
Z tym że algorytm od @spartanPAGE ma złożoność O(n*log(n)) (po zamianie map na unordered_map - O(n)), zaś twój (który jeszcze nie działa) ma złożoność O(n2)

Dodaj do swego kodu warunek: - jeżeli liczba występowała w tablice wcześniej to ją pomiń w zliczaniu i wyświetleniu - to zacznie działać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1