News
Po pewnym okresie delikatnego 'zaniedbania' serwisu zaczynam robić porządki!
Na pierwszy ogień idą:
- komentarze czekające na akceptację (jeszcze 168 sztuk) - postaram się w najbliższym czasie przejrzeć wszystkie wasze wpisy i poprawić zgłoszone błędy bądź odpowiedzieć jeżeli zgłoszone uwagi takowymi nie są,
- przesłane implementacje (jeszcze 52 sztuki),
- przesłane artykuły.
Po waszych uwagach poprawiona została implementacja:
- zamiany liczby na słowa w C++
- zamiana liczby na słowa z polską gramatyką w C# i JavaScript
- Algorytmu Naiwnego wyszukiwania wzorca w C++
- Sprawdzania palindromów w C++
- Kolejki w C++
- Sortowania przez wstawianie w C++
Serwis Algorytmy i struktury danych powstał na przełomie lat 2000 i 2001. Postanowiliśmy stworzyć witrynę wyłącznie o algorytmach i konsekwentnie ją rozbudowywać. Chcieliśmy stworzyć stronę z materiałami dostępnymi również w podręcznikach, lecz opisanymi dużo prościej, mniej formalnie, z przykładami oraz implementacją. Na stronach serwisu znajdziesz setki artykułów z dołączonymi rysunkami, zdjęciami i schematami blokowymi. Istniejące opisy cały czas uzupełniamy i poprawiamy zgodnie z waszymi sugestiami. Oprócz szczegółowych opisów metod oraz przykładów ich użycia znajdziesz tutaj ponad tysiąc implementacji w wielu językach programowania. Każdy z artykułów może być komentowany. Możesz podzielić się uwagami na temat algorytmu, podać dodatkowe przykłady, informacje, przypadki szczególne, itp... Z całej zawartości serwisu możesz korzystać bez żadnych opłat i rejestracji!
Wygeneruj graf
![]() |
Wygeneruj schemat blokowy
![]() |
Wygeneruj wzór matematyczny
![]() |
Weź udział w powstawaniu strony
![]() |
Nowości
-
BC412
Kod kreskowy BC412 został opracowany w 1988 roku przez Computer Identics oraz IBM. W 1992 roku został on ustanowiony przez organizację SEMI (the Semiconductor Equipment and Materials International) jako standard oznaczania półprzewodnikowych wafli krzemowych (SEMI T1-95). Kod BC412 jest kodem jednej szerokości (ang. single-width code), oznacza to, że wszystkie paski są tej samej szerokości. Kodowanie odbywa się poprzez zmienną odległość pustego miejsca... -
Wyznaczanie daty Wielkanocy - metoda Meeusa/Jonesa/Butchera
Wielkanoc jest tak zwanym świętem ruchomym - oznacza to, że każdego roku występuje w inny dzień. Definicja mówi, iż przypada ona w pierwszą niedzielę po pierwszej pełni Księżyca przypadającej po równonocy wiosennej. W 1991 roku Jean Meeus opublikował sposób na obliczanie daty Wielkanocy. Można uznać tą metodę za lepszą od metody Gaussa (index.php?option=com_content&task=view&id=225&Itemid=28), ponieważ nie ma od niej wyjątków i nie wymaga... -
Morphing
Morphing - płynne przechodzenie jednego obrazu w drugi. Zadaniem jest półautomatyczna transformacja jednego obrazu w drugi a zwłaszcza uzyskanie obrazów pośrednich dla pewnego λ z zakresu co oznacza stopień zawartości drugiego obrazka w obrazie wynikowym. Na przykład dla λ = 0.4 obraz wynikowy składa się w 60% z pierwszego i 40% z drugiego obrazu. Nazywamy to interpolacją. Dla λ mniejszego niż zero lub większego niż jeden będziemy mieli do czynienia z... -
Liczby automorficzne
Liczbami automorficznymi nazywamy takie liczby, które podniesione do kwadratu zawierają w końcówce samą siebie. Np. 52 = 25, 62 = 36. Ciekawostką jest to że, liczby automorficzne w zapisie dziesiętnym zawsze kończą się na 5 lub 6. Czy liczba naturalna n o dowolnej podstawie m jest automorficzna można sprawdzić za pomocą następującego równania: n=n^2... -
Retinex
Często robiąc zdjęcia, na których są zarówno obszary mocno oświetlone jak i te położone w cieniu trudno jest dobrać tak parametry by wszystkie szczegóły były dobrze widoczne. W efekcie albo dobrze oświetlona część zdjęcia jest prześwietlona, albo szczegóły pozostające w cieniu nie są widoczne. A przecież ludzkie oko doskonale radzi sobie w takich sytuacjach. Przykładem może być tutaj zdjęcie ciemnego pokoju oświetlonego jedynie małą stojącą lampą, albo zdjęcie krajobrazu...
Najczęściej czytane
-
Schematy blokowe
Schematy blokowe są tzw. metajęzykiem. Oznacza to, że jest to język bardzo ogólny, służy do opisywania algorytmów w taki sposób, by na jego podstawie można było je zaimplementować w każdym języku. Częściami składowymi schematów blokowych są proste figury geometryczne, np. prostokąt, romb, koło, równoległobok itd... W tych figurach umieszczamy warunki oraz proste instrukcje, przy czym mogą być one związane z jakimś konkretnym językiem... -
Numer dowodu osobistego
Dowód osobisty jest dokumentem stwierdzającym tożsamość osoby i poświadczającym jej obywatelstwo. Jak każdy dokument posiada unikalny identyfikator w tym przypadku jest to seria i numer dowodu. Seria dowodu to 3 litery które w trakcie sprawdzania jego cyfry kontrolnej zamienia się na wartości liczbowe wg poniższego wzoru: ABCDEFGHIJKLMNOPQRSTUVWXYZ 1011121314151617181920212223242526272829303132333435... -
Sortowanie bąbelkowe (bubblesort)
Jest to jeden z prostszych algorytmów sortowania. Sprawdzamy całą tablicę od końca, jeżeli trafimy na parę elementów, w której większy poprzedza mniejszy to zamieniamy je miejscami. Po przejściu całej tablicy znów zaczynamy przeszukiwać tą tablicę od końca. Czynność powtarzamy tak długo aż podczas sprawdzania całej tablicy, nie zajdzie ani jedna zamiana elementów. Realizuje się to najczęściej za pomocą zmiennej logicznej. Algorytm nosi... -
Sortowanie szybkie (quicksort)
Algorytm sorotwania szybkiego jest uważany za najszybszy algorytm dla danych losowych. Zasada jego działania opiera się o metodę dziel i zwyciężaj (index.php?option=com_content&task=view&id=63&Itemid=26). Zbiór danych zostaje podzielony na dwa podzbiory i każdy z nich jest sortowany niezależnie od drugiego. Dla zadanej tablicy a[l..p] wybieramy element v=a[l] i przeszukujemy resztę tablicy (tzn. a[l+1..p]) tak długo, aż nie znajdziemy... -
Filtrowanie obrazów
Zastosowanie filtrów w przetwarzaniu obrazów oznacza, że do obliczenia nowej wartości punktu brane są pod uwagę wartości punktów z jego otoczenia. Każdy piksel z otoczenia wnosi swój wkład - wagę podczas przeprowadzania obliczeń. Wagi te zapisywane są w postaci maski. Typowe rozmiary masek to 3 x 3, 5 x 5 bądź 7 x 7. Rozmiary masek są z reguły nieparzyste ponieważ piksel na środku reprezentuje piksel dla którego wykonywana jest operacja przekształcania filtrem....
Najwyżej oceniane
-
Buddhabrot
Buddhabrot jest fraktalem zbudowanym w oparciu o zbiór Mandelbrot'a (index.php?option=com_content&task=view&id=232&Itemid=28). Jego nazwa pochodzi od podobieństwa do obrazu Buddy, siedzącego w pozie medytacyjnej. Technikę uzyskania tego obrazu odkryła i opisała w roku 1993 Melinda Green. Najpierw przypomnijmy sobie definicję zbióru Mandelbrota. Jest to zbiór liczb zespolonych p takich, że ciąg liczb zespolonych z0, z1, z2, ...... -
Generator Park-Miller
Generator liczb pseudolosowych (ang. PRNG - Pseudo-Random Number Generator) pozwala na generowanie ciągu liczb, który: jest deterministyczny - zainicjowany tą samą wartością dają zawsze taki sam ciąg pseudolosowych liczb, pod pewnymi względami jest nieodróżnialny od ciągu uzyskanego z prawdziwie losowego źródła. Generatory liczb pseudolosowych znajdują zastosowania w wielu dziedzinach algorytmiki, są to m.in: algorytmy... -
BC412
Kod kreskowy BC412 został opracowany w 1988 roku przez Computer Identics oraz IBM. W 1992 roku został on ustanowiony przez organizację SEMI (the Semiconductor Equipment and Materials International) jako standard oznaczania półprzewodnikowych wafli krzemowych (SEMI T1-95). Kod BC412 jest kodem jednej szerokości (ang. single-width code), oznacza to, że wszystkie paski są tej samej szerokości. Kodowanie odbywa się poprzez zmienną odległość pustego miejsca... -
GTIN
Globalny numer jednostki handlowej GTIN (ang. Global Trade Item Number), służy do jednoznacznego oznaczania produktów. Pieczę nad nim sprawuje GS1, który jest następcą EAN (ang. European Article Numbering) i UUC (ang. Uniform Code Council). Numer GTIN jest pojęciem dosyć ogólnym, skupiającym w sobie kilka sposobów oznaczania produktów. Numer ten może mieć długość 8, 12, 13 lub 14 cyfr i w zależności od swojej długości może byc kodowany... -
Interleaved Code 25
Przeplatany kod 2 z 5 (ang. Interleaved 2 of 5), w przeciwieństwie do kodu Standard 2 of 5 (index.php?option=com_content&task=view&id=188&Itemid=54), z którego się wywodzi, jest kodem o dużej gęstości. Zwiększenie pojemności kodu osiągnieto tutaj poprzez zakodowanie cyfr zarówno poprzez paski jak i przerwy pomiędzy nimi, podczas gdy Standard 2 of 5 (index.php?option=com_content&task=view&id=188&Itemid=54), kodował informacje jedynie...