Algorytmy i Struktury Danych, Informatyka PWr, Algorytmy i Struktury Danych, Algorytmy i Struktury Danych

[ Pobierz całość w formacie PDF ]
Algorytmy i Struktury Danych
Autor: Paweł Szymankiewicz
 
 
Bubble sort / Sortowanie bąbelkowe
Złożoność czasowa:
O(n
2
)
; pamięciowa:
O(1)
Sortowanie bąbelkowe
polega na porównywaniu dwóch kolejnych elementów i zamianie ich
kolejności, jeżeli zaburza ona założony porządek. Sortowanie kończy się, gdy podczas
kolejnego przejścia
nie
dokonano żadnej zmiany.
SCHEMAT DZIAŁANIA:

4

2
, 5, 1, 7 }
  
>>>
  
{ 2, 
4

5
, 1, 7 }
  
>>>
  
{ 2, 4, 
5

1
, 7 }
  
>>>
  
{ 2, 4, 1, 
5

7
 } 
  
>>>
  

2

4
, 1, 5, 7 }
  
>>>
 
>>>
  
{ 2, 
4

1
, 5, 7 }
  
>>>
  
{ 2, 1, 
4

5
, 7 }
  
>>>
  

2

1
, 4, 
5

7
 }
  
>>>
  
{ 1, 
2

4

5

7
 }
  
>>>
   

1
,
 
2

4

5

7
 } 
 
 
 
Insert sort / Sortowanie przez wstawianie
Złożoność obliczeniowa:
O(n
2
)
Sortowanie przez wstawianie
, jego zasada działania odzwierciedla sposób w jaki ludzie
układają karty – kolejne elementy wejściowe są ustawiane na odpowiednie miejsca
docelowe. Jest efektywny dla niewielkiej ilości elementów. Główne zalety insert sort’a to:

Wydajny dla danych wstępnie posortowanych

Wydajny dla zbiorów o niewielkiej liczebności

Stabilny
SCHEMAT DZIAŁANIA:
1. Utwórz zbiór elementów posortowanych i przenieś do niego dowolny element ze
zbioru nieposortowanego.
2. Weź dowolny element ze zbioru nieposortowanego.
3. Wyciągnięty element, porównuj z kolejnymi elementami zbioru posortowanego,
dopóki nie napotkasz elementu równego lub elementu większego (jeśli chcemy
otrzymać ciąg niemalejący) lub nie znajdziemy się na początku/końcu zbioru
uporządkowanego.
4. Wyciągnięty element wstaw w miejsce gdzie skończyłeś porównywać.
5. Jeżeli zbiór elementów nieposortowanych jest niepusty, wróć do punktu 2.
1
 
 

Insert sort
(tablica)
-
SCHEMAT
CIĄG ZNAKÓW 
ILOŚĆ PORÓWNAŃ 
ILOŚĆ ZAMIAN 
|
ELDCGBHA 
‐ 
‐ 
E
|
LDCGBHA 
‐ 
‐ 
EL
|
DCGBHA 


DEL
|
CGBHA 


CDEL
|
GBHA 


CDEGL
|
BHA 


BCDEGL
|
HA 


BCDEGHL
|



ABCDEGHL
|
 


‐ 
= 22 
= 19 
 

Insert sort
(lista)

SCHEMAT
Ciąg znaków: 5, 8, 4, 3, 6,
1. 5
// dodajemy do listy 5
2. 8, 5
// dodajemy do listy 8 i sprawdzamy z 5. 8 > 5 …
3. 5, 8
// … więc zamieniamy je miejscami
4. 4, 5, 8
// dodajemy 4 do listy i sprawdzamy z 5. Jest OK.
5. 3, 4, 5, 8
// dodajemy 3 do listy i sprawdzamy z 4. Jest OK.
6. 6, 3, 4, 5, 8
// dodajemy 6 do listy i sprawdzamy z 3. 6 > 3
7.
3, 4, 5, 6, 8
// sprawdzamy i zamieniamy aż do stanu OK.
 
2
 
 
Select sort / Sortowanie przez wybieranie
Złożoność:
O(n
2
)
Sortowanie przez wybieranie
polega na wyszukaniu elementu mającego się znaleźć na
zadanej pozycji i zamianie miejscami z tym, który jest tam obecnie. Operacja jest
wykonywana dla wszystkich indeksów zadanej tablicy.
SCHEMAT DZIAŁANIA:
1. Wyszukaj minimalną wartość tablicy od i+1 do końca tablicy.
2. Zamień wartość minimalną z wartością na pozycji i.
NUMER ITERACJI (i) 
TABLICA 
MINIMUM 

[
9,1,6,8,4,3,2,
0



[0,
1
,6,8,4,3,2,9

1 (element znajduje się na właściwej pozycji) 

[0,1,
6,8,4,3,
2
,9


… 
… 
… 
 
 
 
Quicksort / Sortowanie szybkie
Średnia złożoność obliczeniowa:
O(n*log n)
 
Algorytm
sortowania szybkiego
działa
rekursywnie
– wybieramy pewien element tablicy,
tzw.
element osiowy
, a następnie wszystkie elementy mniejsze od niego przenosimy na
początek tablicy, a większe na koniec. Następnie sortujemy pierwszą „połówkę” i drugą
tablicy w ten sam sposób. Algorytm kończy swoje działanie, gdy zbiór do posortowania
składa się z jednego elementu.
 
 
3
 
 
Shell sort / Sortowanie metodą Shella
Metoda Shella
 polega na tym, że sortowany zbiór dzielimy na podzbiory, których elementy są odległe 
od  siebie  o  określoną  odległość 
h
.  Każdy  z  tych  podzbiorów,  sortujemy  wykorzystując  algorytm 
sortowania  przez  wstawianie
.  Następnie  odstęp  zmniejszamy.  Powoduje  to  powstanie  nowych 
podzbiorów  –  będzie  ich  już  mniej.  Sortowanie  powtarzamy  do  chwili,  gdy  odległość 
h
  osiągnie 
wartość  1.  Wtedy  ponownie  sortujemy  ciąg  znaków  za  pomocą 
Insert  sort  (Sortowanie  przez 
wstawianie)

 
 
 
Merge sort / Sortowanie przez scalanie
Złożoność czasowa:
O(n log n)
Sortowanie  przez  scalanie
  to  rekurencyjny  algorytm  sortowania  danych, mający  zastosowanie  przy 
danych  dostępnych  sekwencyjnie  (po  kolei,  jeden  element  na  raz),  na  przykład  w  postaci  listy 
jednokierunkowej (tj. Łączonej jednostronnie) albo pliku sekwencyjnego. 
Opisując działanie algorytmu w skrócie – problem, który został nam postawiony dzielimy na mniejsze 
części, których rozwiązanie jest już łatwiejsze 
SCHEMAT DZIAŁANIA:
1.
Podziel zestaw danych na dwie równe części. 
2.
Zastosuj 
sortowanie  przez  scalanie
  dla  każdej  z  części  (chyba,  że  pozostał  już  tylko  jeden 
element) 
3.
Połącz posortowane części w jedną. 
 
 
 
Heapsort / Sortowanie przez kopcowanie
Złożoność czasowa:
O(n log n)
Podstawą
sortowania przez kopcowanie
jest użycie kolejki priorytetowej zaimplementowanej
w postaci binarnego kopca zupełnego.
Podstawową zaletą algorytmu jest to, że do stworzenia kopca wykorzystać można tę samą
tablicę, w której początkowo znajdują się nieposortowane elementy. Dzięki temu uzyskuje
się stałą złożoność pamięciową.
Początkowo do kopca należy tylko pierwszy element w tablicy. Następnie kopiec
rozszerzany jest o drugą, trzecią i kolejne pozycje tablicy, przy czym przy każdym
rozszerzeniu, nowy element jest przemieszczany w górę kopca, tak aby spełnione były
4
 
 
relacje pomiędzy węzłami. Schematycznie wygląd sortowanej tablicy można przedstawić w
następujący sposób:
KOPIEC
RESZTA NIEPOSORTOWANYCH
ELEMENTÓW
a kopiec rozrasta się, aż do wyczerpania nieposortowanej części tablicy.
Po utworzeniu kopca następuje właściwe sortowanie. Polega ono na usunięciu wierzchołka
kopca, zawierającego element maksymalny (minimalny), a następnie wstawieniu w jego
miejsce elementu z końca kopca i odtworzenie porządku kopcowego. W zwolnione w ten
sposób miejsce, zaraz za końcem zmniejszonego kopca wstawia się usunięty element
maksymalny. Operacje te powtarza się aż do wyczerpania elementów w kopcu.
Drzewa binarne / Binary Tree
Drzewo binarne
to informatyczna struktura danych, w której liczba synów każdego
wierzchołka nie jest większa niż
dwa
. Wyróżniamy wtedy lewego i prawego syna danego
wierzchołka.
 
Binarne drzewo poszukiwań / Binary Search Tree
(BST)
Binarne  drzewo  poszukiwań
  to  dynamiczna  struktura  będąca  drzewem  binarnym,  w  którym  lewe 
poddrzewo  każdego węzła  zawiera wyłącznie  elementy  o  kluczach  nie większych  niż  klucz węzła,  a 
poddrzewo prawe zawiera wyłącznie elementy nie mniejsze niż klucz węzła. 
Węzły poza kluczem, zawierają także wskaźniki na swojego prawego i lewego syna. 
 
5
 
 
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • odszkodowanie.xlx.pl