background image

Sortowanie

A

lg

o

ryt

m

st

ru

kt

u

ry 

d

an

ych

Sortowanie

Bartman Jacek

jbartman@univ.rzeszow.pl

A

lg

o

ryt

m

st

ru

kt

u

ry 

d

an

ych

background image

Sortowanie przez proste wstawianie – przykład

Sortowanie przez proste wstawianie – przykład

41

88

24

39

56

17

72

41

56

41

56

88

24

39

17

03

72

56

17

17

41

56

56

88

24

39

03

72

17

39

17

39

41

56

56

88

24

03

72

39

88

03

03

17

39

41

56

56

88

24

03

72

39

88

17

39

41

56

88

24

03

72

88

24

17

24

41

56

39

88

03

72

03

03

24

17

39

41

56

88

72

24

03

17

24

39

41

56

72

72

88

72

background image

Sortowanie przez proste wybieranie – przykład

Sortowanie przez proste wybieranie – przykład

41

88

24

39

56

17

41

03

03

03

03

88

24

39

56

17

72

03

41

41

17

56

17

56

03

88

24

39

72

41

56

24

56

24

56

72

17

03

39

88

41

72

17

56

24

39

24

56

72

17

03

39

88

41

56

24

39

39

03

17

24

88

56

41

72

39

41

88

41

88

03

17

24

39

56

72

41

88

56

56

03

17

24

39

72

41

88

56

72

88

72

88

03

17

24

39

41

56

72

88

background image

Sortowanie przez prostą zamianę – przykład

Sortowanie przez prostą zamianę – przykład

41

39

56

17

39

03

03

39

39

<

39

03

17

17

<

17

17

03

56

56

<

56

03

56

41

<

41

41

41

17

03

41

56

24

03

17

41

17

03

17

24

39

03

17

24

39

03

17

24

39

03

17

24

88

24

39

03

72

72

03

03

72

<

41

39

72

72

03

03

24

<

24

24

03

24

88

88

<

88

88

03

39

39

<

39

39

17

72

24

56

24

39

88

72

72

72

56

39

88

88

72

39

24

17

39

24

72

56

88

41

88

72

56

41

39

72

56

88

88

72

56

56

41

39

88

72

88

72

72

56

41

88

88

background image

Sortowanie za pomocą malejących przyrostów –
metoda Shella

Sortowanie za pomocą malejących przyrostów –
metoda Shella



Metoda jest rozwini

ę

ciem metody sortowania przez wstawianie.



W metodzie tej, najpierw grupuje si

ę

 i sortuje oddzielnie wszystkie 

elementy oddalone o pewn

ą

 odległo

ść

 (przyrost) h (tj. oddalone „co 

h”). W pierwszym kroku metody tworzy si

ę

 wi

ę

c n-podzbiorów, 

które sortowane s

ą

 metod

ą

 przez wstawianie.

które sortowane s

ą

 metod

ą

 przez wstawianie.



W nast

ę

pnych krokach powtarza si

ę

 tak

ą

 operacj

ę

 dla coraz 

mniejszych odległo

ś

ci h, a

ż

 do momentu gdy h=1, co odpowiada 

normalnemu sortowaniu całego zbioru (elementy oddalone „co 

jeden”).

background image

Sortowanie metodą Shella - przykład

Sortowanie metodą Shella - przykład

background image

Sortowanie metodą Shella – przykład

Sortowanie metodą Shella – przykład

background image

Sortowanie metodą Shella

Sortowanie metodą Shella



Metoda ta jest bardzo efektywna, pomimo, 

ż

e wyst

ę

puje kilka 

wst

ę

pnych procesów sortowa

ń



Dla du

ż

ych warto

ś

ci odst

ę

pu h, sortowane zbiory maj

ą

 mało 

elementów. 



Dla małych h zbiory s

ą

 ju

ż

 znacznie uporz

ą

dkowane.



W obu tych przypadkach sortowanie takich zbiorów za pomoc

ą

 

metody przez wstawiane jest bardzo szybkie.



Metoda działa najlepiej gdy przyrosty h nie s

ą

 swoimi dzielnikami.



Zaleca si

ę

 stosowanie nast

ę

puj

ą

cych przyrostów:

h

k-1 

= 3h

+ 1,  h

= 1,  t = log

3

n-1

... 121, 40, 13, 4, 1

lub:

h

k-1 

= 2h

+ 1,  h

= 1,  t = log

2

n-1

...  31, 15, 7, 3, 1



Efektywno

ść

 metody: Po, Pr ~ n

1,2

background image

Sortowanie przez podział - sortowanie szybkie

Sortowanie przez podział - sortowanie szybkie

Algorytm post

ę

powania



wybiera si

ę

 losowo jaki

ś

 element 

x

z sortowanego zbioru,



przegl

ą

da si

ę

 zbiór 

od strony „lewej”

, a

ż

 znaleziony zostanie taki 

element A

i

ż

A

i

≥≥≥≥

x



przegl

ą

da si

ę

 zbiór 

od strony „prawej”

,

a

ż

 znajdzie si

ę

 element A

j

, taki 



przegl

ą

da si

ę

 zbiór 

od strony „prawej”

,

a

ż

 znajdzie si

ę

 element A

j

, taki 

ż

A

j

≤≤≤≤

x

,



zamienia si

ę

 miejscami elementy A

i

i A

j

,



kontynuuje si

ę

 proces przegl

ą

dania i zamiany, a

ż

 nast

ą

pi spotkanie 

gdzie

ś

 w 

ś

rodku tablicy.

background image

Sortowanie przez podział - sortowanie szybkie

Sortowanie przez podział - sortowanie szybkie



Miejsce spotkania wyznacza punkt podziału tablicy na dwie 
cz

ęś

ci. „Lewa” cz

ęść

 składa si

ę

 z elementów nie wi

ę

kszych ni

ż

 

wybrany element x, „prawa” za

ś

 z elementów nie mniejszych 

ni

ż

 x.



Takie cz

ęś

ci sortuje si

ę

 nast

ę

pnie oddzielnie w sposób 

opisany powy

ż

ej.

opisany powy

ż

ej.



Powtarzanie tych operacji a

ż

 do momentu gdy cz

ęś

ci tablicy 

b

ę

d

ą

 składały si

ę

 z jednego elementu, doprowadzi do 

posortowania całej tablicy.



Efektywno

ść

 metody: Po ~ n*log(n), Pr ~ n

background image

Sortowanie przez podział – przykład

Sortowanie przez podział – przykład

background image

Sortowanie przez podział – przykład

Sortowanie przez podział – przykład

background image

Sortowanie stogowe

Sortowanie stogowe

Drzewo porówna

ń



Dla n-elementowej tablicy mo

ż

na wyznaczy

ć

 „drzewo porówna

ń

” 

za pomoc

ą

 n-1 operacji porówna

ń

 kluczy elementów 



Ka

ż

dy w

ę

zeł jest elementem o mniejszym kluczu z dwóch 

s

ą

siaduj

ą

cych w drzewie



Na wierzchołku drzewa zawsze znajduje si

ę

 element o 

najmniejszym kluczu !

background image

Sortowanie drzewiaste - przykład

Sortowanie drzewiaste - przykład

background image

Sortowanie drzewiaste

Sortowanie drzewiaste



Sortowanie tablicy, dla której utworzono drzewo wymaga:



pobrania elementu z wierzchołka (zawsze najmniejszy klucz)



zast

ą

pienie pobranego elementu elementem o mniejszym kluczu z 

ni

ż

szego w

ę

zła



Procedura taka pozwala odczyta

ć

 z drzewa posortowane elementy 

tablicy

tablicy



Otrzymanie posortowanej tablicy wymaga n operacji odczytu z 
drzewa



Ka

ż

dy odczyt (wybieranie elementu z drzewa wymaga log2(n) 

porówna

ń

 i przesuni

ęć



Cały proces sortowania przez wybieranie z drzewa wymaga wi

ę

n*log(n) operacji (oraz n-1 operacji potrzebnych do utworzenia 
drzewa)

background image

Stóg

Stóg



Stóg jest struktur

ą

 drzewiast

ą

, której ka

ż

dy element jest nie wi

ę

kszy 

od dwóch elementów bezpo

ś

rednio pod nim (potomków)



Pomi

ę

dzy elementami na tym samym poziomie nie zachodz

ą

 

ż

adne 

relacje



Tworzenie struktury stogu wymaga (jak poprzednio n*log(n) operacji

background image

Sortowanie stogowe

Sortowanie stogowe



Sortowanie stogowe polega na pobraniu elementu z wierzchołka, 

przesuwaniu elementów o mniejszych kluczach w gór

ę

 drzewa i 

eliminacji jednego elementu z dołu struktury (li

ś

cia)



Struktura stogu usprawnia sortowanie drzewiaste, poniewa

ż

 

eliminuje niepotrzebne porównania elementu, który jest eliminowany 

z drzewa

background image

Stóg – reprezentacja tablicowa

Stóg – reprezentacja tablicowa

background image

Dodawanie elementów do stogu – przesiewanie

Dodawanie elementów do stogu – przesiewanie



Dodanie elementu musi utrzyma

ć

 

warunek stogu (li

ś

cie potomne s

ą

 

nie wi

ę

ksze ni

ż

 ich rodzic).



Nowy element wstawiany jest na 
wierzchołek drzewa, a nast

ę

pnie 

„przesiewany” przez w

ę

zły 

mniejszych elementów 
stogu,które podnosz

ą

 si

ę

 przez to 

do góry.

do góry.

44

42

10

55

94

18

12

44

42

10

55

94

18

12

44

42

10

55

94

18

12

background image

Dodawanie elementów do stogu – przesiewanie

Dodawanie elementów do stogu – przesiewanie

44

42

10

55

94

18

12

?

?

10

42

44

55

94

18

12

44

42

10

55

94

18

12

10

42

44

55

94

18

12

10

42

12

55

94

18

44



Uzyskany zapis spełnia 
wymogi stawiane stogowi

background image

Dodawanie elementów do stogu – podsumowanie

Dodawanie elementów do stogu – podsumowanie



Dla tablicy n elementowej, 
elementy 

od (n div 2)+1 

do n

tworz

ą

 stos.

background image

Sortowanie stogowe

Sortowanie stogowe



Maj

ą

c tablice o strukturze 

stogu, sortowanie polega 
na:



pobraniu z wierzchołka 
elementu i usuni

ę

ciu go ze 

stogu



przesianiu przez 

10

42

12

55

94

18

44

67

67

42

12

55

94

18

44

10

67

42

12

55

94

18

44

10



przesianiu przez 
zmniejszony stóg elementu 
ostatniego



w miejsce ostatniego 
elementu umieszczenie 
elementu zdj

ę

tego z 

wierzchołka

12

42

67

55

94

18

44

10

12

42

18

55

94

67

44

10

44

42

18

55

94

67

12

10

background image

44

42

18

55

94

67

12

10

18

42

44

55

94

67

12

10

18

42

44

55

94

67

12

10

67

42

44

55

94

18

12

10

67

55

94

44

42

18

12

10

55

67

94

44

42

18

12

10

55

67

94

44

42

18

12

10

94

67

55

44

42

18

12

10

42

67

44

55

94

18

12

10

42

55

44

67

94

18

12

10

94

55

44

67

42

18

12

10

44

55

94

67

42

18

12

10

44

55

94

67

42

18

12

10

67

94

55

44

42

18

12

10

67

94

55

44

42

18

12

10

94

67

55

44

42

18

12

10