Zsumowanie identycznych wartości w tablicy

0

Dzień dobry wieczór,
Na wstępie powiem, że kodu nie będzie, bo kompletnie nie mam pomysłu jak to zacząć. Załóżmy, że mamy tablicę:

Nagłówek 1 Nagłówek 2
Towar1 1
Towar1 1
Towar1 1
Towar2 2
Towar3 4
Towar2 4
Towar1 3

Chciałbym teraz w wyniku otrzymać tablicę następującą:

Nagłówek 1 Nagłówek 2
Towar1 6
Towar2 6
Towar3 4

Czy ktoś mi pomoże i podpowie jak ogarnąć taki algorytm???

1

Tablica czarna w klasie ?
Tablica w bazie relacyjnej ?

Buster napisał(a):

Dzień dobry wieczór,
Na wstępie powiem, że kodu nie będzie, bo kompletnie nie mam pomysłu jak to zacząć. Załóżmy, że mamy tablicę:

na razie to nie masz pomysłu skutecznie powiedziec o co chodzi

2
Buster napisał(a):

Dzień dobry wieczór,
Na wstępie powiem, że kodu nie będzie, bo kompletnie nie mam pomysłu jak to zacząć. Załóżmy, że mamy tablicę:

Nagłówek 1 Nagłówek 2
Towar1 1
Towar1 1
Towar1 1
Towar2 2
Towar3 4
Towar2 4
Towar1 3

Chciałbym teraz w wyniku otrzymać tablicę następującą:

Nagłówek 1 Nagłówek 2
Towar1 6
Towar2 6
Towar3 4

Czy ktoś mi pomoże i podpowie jak ogarnąć taki algorytm???

Najprostszy sposób.
Masz tablicę z danymi wejściowymi (tablica1) oraz tablicę wyjściową (tablica2)

  1. Tworzysz tablicę2 o strukturze identycznej jak tablica1, ale o zerowej długości
  2. Iterujesz po pierwszej tablicy wyszukując w drugiej tablicy pasującego elementu .. Tablica1.naglowek=Tablica2.naglowek
  3. Jeśli nie znaleziono, do tablicy drugiej dodajesz nową pozycję i ustawiasz tablica2.naglowek2=tablica1.naglowek2 oraz .tablica2.naglowek1=tablica1.naglowek1
    a jeśli znaleziono to tablica2.naglowek2=tablica2.naglowek2+ tablica1.naglowek2

Ps1. jeśli tablica1 będzie miała duży rozmiar, to należało by zastosować jakiś bardziej wyrafinowany algorytm wyszukiwania w tablicy2 , ponieważ proste iterowanie po tablicy2 może skutkować złożoność obliczeniową O(n2)
Ps2. Jeśli dane do tablicy zaciągasz z bazy, agregację (sumowanie) możesz załatwić na poziome zapytania do bazy i dostaniesz posumowanego gotowca

0

Lepiej by było od razu sumować towary, w trakcie ich dodawania do tablicy, niż później martwić się tym, jak te zlecenia połączyć. Możesz tak zrobić, czy koniecznie do tablicy muszą lądować duplikaty?

0
furious programming napisał(a):

Lepiej by było od razu sumować towary, w trakcie ich dodawania do tablicy, niż później martwić się tym, jak te zlecenia połączyć. Możesz tak zrobić, czy koniecznie do tablicy muszą lądować duplikaty?

Mogę mieć od razu tablicę wynikową.

2

No to użyj hash-mapy zamiast tablicy, czy tam słownika (kluczem będzie nazwa towaru). Wtedy wygodnie będziesz mógł sprawdzać istnienie towarów w kontenerze, a dostęp do nich będziesz miał w O(1).

0
furious programming napisał(a):

No to użyj hash-mapy zamiast tablicy, czy tam słownika (kluczem będzie nazwa towaru). Wtedy wygodnie będziesz mógł sprawdzać istnienie towarów w kontenerze, a dostęp do nich będziesz miał w O(1).

Hmmm. Przyznam, że pierwszy raz słyszę o czymś takim. Trzeba będzie pogrzebać.

0
furious programming napisał(a):

No to użyj hash-mapy zamiast tablicy, czy tam słownika (kluczem będzie nazwa towaru). Wtedy wygodnie będziesz mógł sprawdzać istnienie towarów w kontenerze, a dostęp do nich będziesz miał w O(1).

Nie będzie O(N1).
Złożoność O(n1) będzie przy odczycie danych wejściowych. A jeśli dodasz do tego wstawienie każdego obiektu do słownika to dostaniesz O(N1)*O(wstawienie obiektu do słownika )

1

Pisałem o O(1), nie o O(n1). Hashmapy cechuje złożoność O(1) dla wstawiania i odczytu (insertion and lookup).

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