Zsumowanie identycznych wartości w tablicy

Zsumowanie identycznych wartości w tablicy
BU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 297
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???

ZD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2310
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

GS
  • Rejestracja: dni
  • Ostatnio: dni
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

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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?

BU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 297
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ą.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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).

BU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 297
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ć.

GS
  • Rejestracja: dni
  • Ostatnio: dni
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 )

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
1

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.