eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingTablica int i usuwanie duplikatów › Re: Tablica int i usuwanie duplikatów
  • Data: 2015-09-19 20:52:10
    Temat: Re: Tablica int i usuwanie duplikatów
    Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 19.09.2015 11:34, szemrany wrote:
    > On Sat, 19 Sep 2015 03:08:27 +0200, bartekltg wrote:

    >
    >>> Kilka lat temu znany tu Sebastian Biały wpadł na sąsiednią grupę delphi, bo
    >>> coś zrobić w Delphi musiał i pytał m.in. o hash table. Gdy się dowiedział,
    >>> że nie ma to dostał nomen omen białej gorączki i zbluzgał zarówno samo
    >>> Delphi jak i kilka postronnych osób ;-) Fakt, że pytał o Delphi 5, które
    >>> było z poprzedniego wieku. Teraz dodano kilka kontenerów, ale to jest
    >>> dosłownie KILKA.
    >>
    >> Jezusmariamisiek, jak za fortrana łupanego ;]
    >
    > Ale to jest zrozumiałe, założenia były jakie były i rozwijano w pierwszej
    > kolejności to co było powszechniej potrzebne. Do tego dochodzi zawierucha
    > związana z Borlandem, który 10 lat temu odpuścił sobie rozwój Delphi i
    > skończyło się prawie jego śmiercią. Po kilku latach znalazła i kilku

    10-15 lat temu był i stl, i boost.
    ;-)

    > próbach jego utrzymania, znalazł się w końcu inwestor, firma Embarcadero,
    > producent narzędzi bazodanowych, który zaczął dość dynamiczny rozwój
    > zarówno środowiska jak i języka (unicode, x64, generyki, funkcje anonimowe,
    > bogate RTTI, kompilatory na platformy mobilne i OSX, itd.). Ale to wszystko
    > jest z dużym opóźnieniem względem świata. Poza tym ceny lecą w kosmos, a
    > bugi wraz z nimi.

    Płatny kompilator. W momencie, gdy M$ wypuszcza darmowego visuala
    z (pewnemi) prawami komercyjnymi. NIe wróżę im za dobrze.
    CHoć z drugiej strony COBOL dalej funkcjonuje, bo pewne
    rzeczy 'pisze sie od trzech pokolej w COBOLU' ;-)



    >> I zaraz ktoś będzie trzytmał inty jako stringi;)
    >
    > No niestety, świadomość algorytmiki wśród delphiarzy jest nikła... sam
    > staram się wyjść poza schemat, ale to wiąże się z ...dłubaniem ;-)
    > A paradoksalnie to właśnie twórca Pascala napisał wszak klasyczną pozycję o
    > algorytmach i strukturach danych :-)

    Ja też sie na wstępnych latach studiów (wstep do programowania,
    ASD) uczyłem na turbopascalu. Pewnie nadal jakiegoś freepascala używają.
    BTW, freepescal też się rozwija i tworzy swoje kontenery, mozę
    delphi je za jakiś czas zaadoptuje.



    >>> oraz starsze:
    >>> TBucketList - hash lista na pointery oparta o array of array of pointer,
    >>> gdzie pierwsza tablica zawiera kubełki zbudowane przez proste przesunięcie
    >>> bitów w prawo, a druga zawiera już wartości dla konkretnego kubełka.
    >>
    >> O, i z tego co czytem, to jest odpowiednik std::set.
    >> http://stackoverflow.com/questions/547879/how-to-jud
    ge-number-of-buckets-for-tbucketlist
    >> "Aside from that, TBucketList is just an ordinary hash table like you
    >> learned about in your data-structure class."
    >>
    >> I zaraz wspomina o TIntegerBucketList. Super, nie musisz bawić
    >> się wskaźnikami, od razu ejst to, co trzeba.
    >
    > Hmm... czyli tego mógłbym użyć w algorytmie w którym wspominaliście o set?

    Tak. Tak mi sie wydaje:
    http://docwiki.embarcadero.com/Libraries/XE8/en/Syst
    em.Contnrs.TIntegerBucketList

    Nie jestem pewien, bo to jest ujnia nie dokumentacja :(



    >>> zajęciach z programowania, także kiedyś w pascalu. Nie wiem dlaczego tak
    >>> jest, ale widać rynek tego nie potrzebował.
    >>
    >> Albo brak takiego wsparcia doprowadził do tego, że język stał
    >> się niszą do robienia interfejsów do bazy danych:(
    >
    > Uhm... właśnie, a szkoda, bo lubię jego czytelność, która znacznie ułatwia
    > refaktoring, np. w stosunku do nieszczęsnej składni C++ (no ofense
    > siplusowcy! ;-)

    W c++ możesz pisać równie czytelnie jak w pascalu.
    Tylko w c++ mozesz też pisać nieczytelnie, nawet bardzo nieczytelnie.

    Ale to ta sama zasada co z używaniem niskopoziomowych kostrukcji,
    to, że są dostępne, nie oznacza, zę zawsze powinno się z nich
    korystać.




    >
    >>> Są co prawda fajne zewnętrzne projekty, a jeden z nich się rozwija od lat
    >>> poważnie i wygląda na to, że już nie padnie, jest nim Spring for Delphi:
    >>>
    >>> https://bitbucket.org/sglienke/spring4d
    >
    >> Mi się nie udało na szybko nawet doikumentacji znaleźć, żeby
    >> zobaczyć, co tam jest ;-)
    >
    > Przecież jest:
    > https://bitbucket.org/sglienke/spring4d/wiki/Home
    > i stąd odnośniki.
    >
    > Poza tym ja już od dawna jako najlepszej dokumentacji używam samych źródeł
    > oraz źródeł testów jednostkowych ;-)

    No jak nie masz porządnej dokumentacji, to musisz się męczyć;-)

    > Choć rozumiem, że dla kogoś spoza
    > świata Object Pascala kod może być trudniejszy do czytania, tak jak dla
    > mnie potworki C++ :-P

    Kod biblioteczny c++ jest ciężki do czytania. Bo używa się tam
    ość skompilkowanyvch konstrukjic, by potem _używanie_ tych bibliotek
    było łatwe.

    Dokumentacja powinna wyglądać tak:
    http://en.cppreference.com/w/cpp/container/unordered
    _map

    Krótki opis co to jest, lista metod i pól, do każdej opis
    co robi (jakie sa argumentry, co wypluwa) i przykład.


    > No tak, tu mnie masz... Ale gdybym jednak się już miał zajmować czymś innym
    > to nie będzie to na pewno C++... nie lubię tej skomplikowanej składni i
    > asemblerowej niskopoziomowości.

    W c++ jest jezykiem wyskiego poziomu. IMHO jest tam więcej
    wysokopoziomowych konstrukcji niż w Pascalu (generyczne, funkcyjne...).
    Chyba mylisz c++ z c.
    Tak, w C+ można dobrać się do bebechów, ale nie jest to normalny
    sposób pisania.
    To, że jezyk daje więcej możliwosćie najczęśćiej jest zaletą.
    A, że programiści to często bałąganiarze, to ta zaleta czasem
    wychodzi bokiem ;-)

    .....
    >> sortowanie stab
    >> poprawność:
    >> 12 457 12 457 1 56 89 12 11 11 55 11 11 1 457
    >> 12 457 1 56 89 11 55
    >> szybkość
    >> 10 zajelo 2.14358e-07s
    >> 100 zajelo 3.83037e-06s
    >> 1000 zajelo 7.91519e-05s
    >> 10000 zajelo 0.00108764s
    >> 100000 zajelo 0.0153062s
    >> 1000000 zajelo 0.267471s
    >> 10000000 zajelo 5.37913s
    >
    > No to mam dane do rozkminy na dłuższe posiedzenie, dzięki :-)

    Poza najwyższym wynikiem czasy są nieco zepsute (kolejne odpalenia
    szły dla tablicy z samymi unikatami). Porównanie algorytmów dla
    tej samej liczby powtórzeń nadal ma sens*), ale porówanie różnych
    do siebie może nieść pewien błąd.

    testy dla 10000000 miały tylko jeedn obrót pętli i są OK.

    *) można mieć wątpliwosći co do wersji z sortowaniem + unique,
    bo wynik jest posortowany, ale gcc używa qsorte (introsorta dokładniej)
    z medianą z trzech, a nie timsorta, więc posortowaną tablicę sortuje
    się własciwie tak samo długo jak losową.


    Jak będize mi sie chciało zrobić porządek, poprawie kod i wyniki.


    pzdr
    bartekltg


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: