eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Tablica int i usuwanie duplikatów
Ilość wypowiedzi w tym wątku: 68

  • 1. Data: 2015-09-14 21:56:05
    Temat: Tablica int i usuwanie duplikatów
    Od: szemrany <s...@o...off>

    Hejka,

    Mam tablicę intów i potrzebuję usunąć duplikaty. Chciałbym uniknąć
    sortowania.
    Jak to zrobić wydajnie? Jakiś algorytm sprytny?

    --
    howgh
    szemrany
    "Trzeba z żywymi naprzód iść, po życie sięgać nowe,
    a nie w uwiędłych laurów liść z uporem stroić głowę"


  • 2. Data: 2015-09-14 22:50:45
    Temat: Re: Tablica int i usuwanie duplikatów
    Od: Adam Klobukowski <a...@g...com>

    W dniu poniedziałek, 14 września 2015 21:56:08 UTC+2 użytkownik szemrany napisał:
    > Hejka,
    >
    > Mam tablicę intów i potrzebuję usunąć duplikaty. Chciałbym uniknąć
    > sortowania.
    > Jak to zrobić wydajnie? Jakiś algorytm sprytny?

    Trochę mało informacji. Jeżeli dziedzina wartości intów jest ograniczona, można
    zliczać występowanie każdej wartości. Jeśli nie, to bez czegoś co przypomina
    sortowanie sie nie obędzie.

    AdamK


  • 3. Data: 2015-09-15 03:23:26
    Temat: Re: Tablica int i usuwanie duplikatów
    Od: witek <w...@g...pl.invalid>

    szemrany wrote:
    > Hejka,
    >
    > Mam tablicę intów i potrzebuję usunąć duplikaty. Chciałbym uniknąć
    > sortowania.
    > Jak to zrobić wydajnie? Jakiś algorytm sprytny?
    >

    collection zamiast tablicy?



  • 4. Data: 2015-09-15 04:10:29
    Temat: Re: Tablica int i usuwanie duplikatów
    Od: bartekltg <b...@g...com>

    On 14.09.2015 21:56, szemrany wrote:
    > Hejka,
    >
    > Mam tablicę intów i potrzebuję usunąć duplikaty. Chciałbym uniknąć
    > sortowania.
    > Jak to zrobić wydajnie? Jakiś algorytm sprytny?

    Wpakuj do tablicy hashującej, takiej bez powtórzeń
    (unordered_set<> w cpp). [To, jak się zastanowić,
    bardzo podobne rozwiązanie do proponowanego przez Adama]

    Może być nawet szybsze niż sortowanie (oczekiwaną złożoność
    ma liniową), ale za to pamięci zeżre trochę.

    Czemu nie chcesz sortowania?

    pzdr
    bartekltg






  • 5. Data: 2015-09-15 04:10:47
    Temat: Re: Tablica int i usuwanie duplikatów
    Od: bartekltg <b...@g...com>

    On 15.09.2015 03:23, witek wrote:
    > szemrany wrote:
    >> Hejka,
    >>
    >> Mam tablicę intów i potrzebuję usunąć duplikaty. Chciałbym uniknąć
    >> sortowania.
    >> Jak to zrobić wydajnie? Jakiś algorytm sprytny?
    >>
    >
    > collection zamiast tablicy?

    A co to?

    pzdr
    bartekltg



  • 6. Data: 2015-09-15 09:32:50
    Temat: Re: Tablica int i usuwanie duplikatów
    Od: szemrany <s...@o...off>

    On Tue, 15 Sep 2015 04:10:29 +0200, bartekltg wrote:

    >> Mam tablicę intów i potrzebuję usunąć duplikaty. Chciałbym uniknąć
    >> sortowania.
    >> Jak to zrobić wydajnie? Jakiś algorytm sprytny?
    >
    > Wpakuj do tablicy hashującej, takiej bez powtórzeń
    > (unordered_set<> w cpp). [To, jak się zastanowić,
    > bardzo podobne rozwiązanie do proponowanego przez Adama]
    >
    > Może być nawet szybsze niż sortowanie (oczekiwaną złożoność
    > ma liniową), ale za to pamięci zeżre trochę.

    I naprawdę algorytmika niczego lepszego nie wymyśliła?

    > Czemu nie chcesz sortowania?

    W zasadzie w przypadku jaki tu i teraz potrzebuję sortowanie jest
    dopuszczalne, ale chciałem to zrobić generycznie i mieć do wykorzystania w
    innych przypadkach, a nie zawsze zmiana kolejności elementów będzie
    dopuszczalna.

    --
    howgh
    szemrany
    "Trzeba z żywymi naprzód iść, po życie sięgać nowe,
    a nie w uwiędłych laurów liść z uporem stroić głowę"


  • 7. Data: 2015-09-15 10:50:15
    Temat: Re: Tablica int i usuwanie duplikatów
    Od: "AK" <n...@n...com>

    Użytkownik "szemrany" <s...@o...off> napisał:

    > I naprawdę algorytmika niczego lepszego nie wymyśliła?

    Ano wymyslila, ale "to zalezy" (a nawet bardzo zalezy).

    Jesli roznica max - min nie jest za duza to "funkcja hashujaca"
    sprowadzi sie do "indeksowania wartoscią" w rodzaju
    uniques[x - min] = x

    Jesli np wartosci mogace wystapic w tablicy sa z gory znane
    i niezbyt liczne to np. "perfect hash" nie jest najgorszym wyborem.

    Ogolnie to podpowiedz: specjalizowany _pod inty_ kontener typu set
    (zwykle "hashujacy" lub b-drzewiasty).
    powinna wystarczyc.

    AK


    ---
    Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe
    Avast.
    https://www.avast.com/antivirus


  • 8. Data: 2015-09-15 12:01:07
    Temat: Re: Tablica int i usuwanie duplikatów
    Od: szemrany <s...@o...off>

    On Tue, 15 Sep 2015 10:50:15 +0200, AK wrote:

    >> I naprawdę algorytmika niczego lepszego nie wymyśliła?
    >
    > Ano wymyslila, ale "to zalezy" (a nawet bardzo zalezy).
    >
    > Jesli roznica max - min nie jest za duza to "funkcja hashujaca"
    > sprowadzi sie do "indeksowania wartoscią" w rodzaju
    > uniques[x - min] = x
    >
    > Jesli np wartosci mogace wystapic w tablicy sa z gory znane
    > i niezbyt liczne to np. "perfect hash" nie jest najgorszym wyborem.
    >
    > Ogolnie to podpowiedz: specjalizowany _pod inty_ kontener typu set
    > (zwykle "hashujacy" lub b-drzewiasty).
    > powinna wystarczyc.

    To nie jest algorytmika, to brute force :-)
    Ale chyba rzeczywiście nie ma sprytniejszej metody lub jeszcze jej nie
    wymyślono.

    --
    howgh
    szemrany
    "Trzeba z żywymi naprzód iść, po życie sięgać nowe,
    a nie w uwiędłych laurów liść z uporem stroić głowę"


  • 9. Data: 2015-09-15 14:16:10
    Temat: Re: Tablica int i usuwanie duplikatów
    Od: bartekltg <b...@g...com>

    On 15.09.2015 09:32, szemrany wrote:
    > On Tue, 15 Sep 2015 04:10:29 +0200, bartekltg wrote:
    >
    >>> Mam tablicę intów i potrzebuję usunąć duplikaty. Chciałbym uniknąć
    >>> sortowania.
    >>> Jak to zrobić wydajnie? Jakiś algorytm sprytny?
    >>
    >> Wpakuj do tablicy hashującej, takiej bez powtórzeń
    >> (unordered_set<> w cpp). [To, jak się zastanowić,
    >> bardzo podobne rozwiązanie do proponowanego przez Adama]
    >>
    >> Może być nawet szybsze niż sortowanie (oczekiwaną złożoność
    >> ma liniową), ale za to pamięci zeżre trochę.
    >
    > I naprawdę algorytmika niczego lepszego nie wymyśliła?

    A co byś chciał lepszego?

    >
    >> Czemu nie chcesz sortowania?
    >
    > W zasadzie w przypadku jaki tu i teraz potrzebuję sortowanie jest
    > dopuszczalne, ale chciałem to zrobić generycznie i mieć do wykorzystania w

    Sortowanie jest bardzo generyczne.

    > innych przypadkach, a nie zawsze zmiana kolejności elementów będzie
    > dopuszczalna.

    Tak podejrzewałem, że nie chcesz zamieniać kolejności,
    ale tego NIE NAPISAŁEŚ ;p

    Przechodząc tablicę trzymaj kontener (drzewo zrównoważone - set,
    lub tablice hashującą - unordered set) z elementami już
    przetworzonymi, obrabiasz element z tablicy jeśli nie ma go
    w pomocniczym kontenerze. Po obrobieniu wsadzasz go tam.

    pzdr
    bartekltg







  • 10. Data: 2015-09-15 14:53:30
    Temat: Re: Tablica int i usuwanie duplikatów
    Od: "AK" <n...@n...com>

    Użytkownik "szemrany" <s...@o...off> napisał:

    > To nie jest algorytmika, to brute force :-)

    Jakie brute force ? Zastanow sie.
    Perfect hash (powszechnie stosowany np w kompilatorach,
    roznych dispatcherach i nie tylko),

    https://en.wikipedia.org/wiki/Perfect_hash_function
    http://homepages.dcc.ufmg.br/~nivio/papers/cikm07.pd
    f
    https://en.wikipedia.org/wiki/Dynamic_perfect_hashin
    g

    czy mapowania wartosc-index/indeksowanie wartoscią
    (patrz chocby Bentley "Perelki programowania") to brute force ?

    To przeciez _najwydajniejsze_ z mozliwych sposobow
    znaljdowania/separacji (w tym wartosci unikalnych).

    AK


    ---
    Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe
    Avast.
    https://www.avast.com/antivirus

strony : [ 1 ] . 2 ... 7


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: