@HORrorNY: Śmiej się śmiej ;) Kiedyś tego mema pokazałem kumplowi, Nie zrozumiał o co mi chodzi bo znał jednego z gości z tej fotki ;) Chodził z nim do klasy w szkole średniej chociaż chodził to za wiele powiedziane bo raz że kilka klas w podstawówce przeskoczył a dwa, że od pewnego momentu tamten znowu miał indywidualny tok nauczania (musiał się bardzo nudzić w szkole). Osiągnięcia tego kolesia:
@maniac777: To jest Tomek Czajka? O kurcze! Jasne że znam, w tej chwili nr 3 na świecie w TopCoder, którego TCO zresztą wygrał kilka razy. A myślałem że to tylko losowy obrazek nerdów... :O
Hm może małe wyjaśnienie... algorytmy sortowania służą do uporządkowania m.in. liczb (słupków), tutaj od najmniejszej do największej.
Zestawienie pokazuje 15 najbardziej znanych algorytmów i wizualizację ich działania. Dźwięki odpowiadają odczytywaniu liczby (zaznaczone też na czerwono), im mniejsza liczba tym niższy ton dźwięku.
Algorytmy składają się z kroków, które są wykonywane wiele(tysięcy) razy. Z grubsza te pokazane w filmiku działają tak:
Selection Sort - intuicyjnie: po kolei szukamy najmniejszej liczby. Czyli: liczby są
@nybble: Tak ogólnie to jeszcze powiem że prawie każdy z tych algorytmów dobrze się sprawdza w innej sytuacji. Np. Quick Sort ma złożoność obliczeniową n* lb(n) ale dla małych danych wywołuje strasznie dużo rekurencji wiec w niektórych interpretacjach po zejściu QS to np .16 elementów używa się czegoś innego.Selection Sort jest bardzo dobry do całkiem uporządkowanych danych.
Warto podkreślić, że da się udowodnić, że każdy algorytm sortujący poprzed porównywanie elementów ma złożoność conajmniej liniowo-logarytmiczną czyli O(nlog(n)).
Nie wiem po co to obejrzałem, ale jak oglądałem(a oglądałem 3 razy pod rząd ) to cieszyłem się jak dziecko z tych wszystkich dźwięków i przeskakujących kresek.
@Tabciu: algorytmy sortowania służą w programach i systemach informatycznych do szeregowania danych, czyli układania czegoś w kolejności którą chcemy. Np. wyciąg historii operacji na rachunku bankowym jest wyświetlany w kolejności chronologicznej po dacie. Jest to uzyskane przy pomocy algorytmu sortowania na danych wykonanych transakcji.
A czy może mi ktoś wytłumaczyć, czemu w niektórych algorytmach licznik porównań stoi na wartości 0? To chyba jakiś bug w tej wizualizacji, niemożliwe jest sortowanie bez porównywania.
I jeszcze jedno mnie ciekawi od bardzo dawna - czy znajomość działania tych algorytmów jest do czegokolwiek przydatna programiście? Funkcje sortujące są po prostu gotowe. Nie trzeba ich wymyślać. Mało tego - nie trzeba nawet ich wybierać, generalnie standardowa biblioteka ma już jakiegoś wypasionego
@pies_harry: > A czy może mi ktoś wytłumaczyć, czemu w niektórych algorytmach licznik porównań stoi na wartości 0? To chyba jakiś bug w tej wizualizacji, niemożliwe jest sortowanie bez porównywania.
Sortując można się obyć bez porównań, wystarczy skorzystać z pewnych założeń. Przykładowo, jeśli wiesz że na wejściu będziesz dostawać tylko liczby od 1 do 100, tworzysz tablicę stuelementową i inicjujesz ją zerami. Kiedy na wejściu dostajesz liczbę, zwiększasz wartość znajdującą się
Komentarze (56)
najlepsze
http://www.oi.edu.pl/contestants/Tomasz%20Czajka/ (też wtedy
Zestawienie pokazuje 15 najbardziej znanych algorytmów i wizualizację ich działania. Dźwięki odpowiadają odczytywaniu liczby (zaznaczone też na czerwono), im mniejsza liczba tym niższy ton dźwięku.
Algorytmy składają się z kroków, które są wykonywane wiele(tysięcy) razy. Z grubsza te pokazane w filmiku działają tak:
Selection Sort - intuicyjnie: po kolei szukamy najmniejszej liczby. Czyli: liczby są
P.S . kwantowe bongo
dziękuję :)
I jeszcze jedno mnie ciekawi od bardzo dawna - czy znajomość działania tych algorytmów jest do czegokolwiek przydatna programiście? Funkcje sortujące są po prostu gotowe. Nie trzeba ich wymyślać. Mało tego - nie trzeba nawet ich wybierać, generalnie standardowa biblioteka ma już jakiegoś wypasionego
@pies_harry: sortowanie przez zliczanie?
Sortując można się obyć bez porównań, wystarczy skorzystać z pewnych założeń. Przykładowo, jeśli wiesz że na wejściu będziesz dostawać tylko liczby od 1 do 100, tworzysz tablicę stuelementową i inicjujesz ją zerami. Kiedy na wejściu dostajesz liczbę, zwiększasz wartość znajdującą się