Article View: alt.pl.comp.lang.csharp
Article #861Re: hashtable - arraylist
From: Marek Janaszewski USUNTO. z adre...
Date: Wed, 07 Apr 2004 19:58
Date: Wed, 07 Apr 2004 19:58
49 lines
3509 bytes
3509 bytes
Showstoppa wrote: > witam > chcialbym sie dowiedziec jakie sa roznice miedzy hashtable a > arraylist ? jakies sa zalety i wady obu tablic ? > > chcialbym odpalic w aplikacji kilka watkow i miec jakos dostep do nich > przez umieszczenie ich w tablicy. [...] Witam! Haszowanie, hashing, inaczej algorytmy mieszające to właściwie cała metodologia tworzenia algorytmów do efektywnego wyszukiwania. W ArrayList jest stosowany z algorytm liniowy, brutalny, wyczerpujący, czy jak go zwać, aby znaleźć odpowiedni element. W najgorszym wypadku trzeba przeszukać całą tablice aby dowiedzieć się, że elementu w tablicy nie ma. Czyli po prostu pętla po wszystkich elementach. Inne algorytmy to wyszukiwanie połówkowe (binarne) albo drzewa. Te algorytmy opierają się na tym, że dane są posortowane albo są organizowane w drzewa w odpowiedniej kolejności. Np. o specjalne drzewa oparte są indeksy w bazach danych, B-Tree. W bazach danych ważne są także aspekty dyskowe stosowanych algorytmów, ponieważ ruch głowicy dysku długo trwa. O ile mi wiadomo sterta (heap) czyli pamięć dynamiczna to także drzewo binarne pełne. Czyli dwa elementy w każdym węźle. A są także algorytmy mieszające. Algorytmy mieszające za pomocą specjalnej funkcji zgadują położenie elementu. Oczywiście podobna funkcja służy do umieszczenia elementu. Jest to metoda zamiany danych na adres w strukturze. Najbardziej brutalny sposobem było by odwzorowanie bezpośrednie (jeśli dobrze pamiętam nazwę). Czyli np. każdy układ liter w nazwisku, składającym się np. z 20 znaków, ma obliczony inny adres. Oczywiście wtedy taka struktura była by ogromna, a osób o nazwiskach Aaaaaa raczej jest mało. Dlatego zwykle pod danym adresem znajduje się wiele elementów. Czasem ludzie stosują algorytmy haszujące, np. kiedy szukamy hasła w encyklopedii wiemy mniej-więcej gdzie położyć polec na podstawie położenia litery w alfabecie. Z algorytmów haszujacy korzystają także bazy danych. O ile wiem haszowanie ma jakieś zastosowanie także w kryptografii. Chyba funkcje skrótu czy inne sumy kontrolne także mają z tym coś wspólnego. Generalnie stosują algorytmy przyspieszające wyszukiwanie wydłużamy aktualizacje danych i często używamy dodatkowej pamięci do przechowywania np. indeksów. Tyle co zapamiętałem z książki o algorytmach i strukturach danych. Zwykle i tak stosuje się proste pętle bo tablice są małe, a dużą ilość danych przerzuca się na bazy danych. -- Pozdrawiam, Marek Janaszewski [ j_m...@gazeta.pl ]
Technical Details
Message-ID:
<c51mh1$185d$1@news.atman.pl>Path:
mbox-mo1.pugleaf.net!archiver1.google.com!news1.google.com!news.glorb.com!nntp.idg.pl!news.atman.pl!not-for-mailReferences:
<9vnyvmenedbd$.1f6nevwuylq55.dlg@40tude.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!archiver1.google.com!news1.google.com!news.glorb.com!nntp.idg.pl!news.atman.pl!not-for-mail From: "Marek Janaszewski \(USUN_TO. z adresu!\)" <USUN_TO...@gazeta.pl> Newsgroups: alt.pl.comp.lang.csharp Subject: Re: hashtable - arraylist Date: Wed, 7 Apr 2004 21:58:14 +0200 Organization: ATMAN Lines: 50 Message-ID: <c51mh1$185d$1@news.atman.pl> References: <9vnyvmenedbd$.1f6nevwuylq55.dlg@40tude.net> NNTP-Posting-Host: staticline702.toya.net.pl Mime-Version: 1.0 X-Trace: news.atman.pl 1081367906 41133 217.113.228.127 (7 Apr 2004 19:58:26 GMT) X-Complaints-To: use...@atman.pl NNTP-Posting-Date: Wed, 7 Apr 2004 19:58:26 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1158 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit