AiSD 06

background image

Algorytmy i Struktury Danych

Wykład 6:

Sortowanie kubełkowe, sortowanie zewn˛etrzne

dr Anna Maria Radzikowska

Wydział Matematyki i Nauk Informacyjnych

Politechnika Warszawska

Projekt wspó

ãfinansowany przez Uniē EuropejskĎ

w ramach Europejskiego Funduszu Spo

ãecznego

dr Anna M. Radzikowska, AiSD, wykład 6

– p.1/28

background image

Sortowanie kubełkowe

dr Anna M. Radzikowska, AiSD, wykład 6

– p.2/28

background image

Sortowanie kubełkowe

Dane jest uniwersum U

= {u

1

, . . . , u

m

}. Rozwa˙zane b˛ed ˛

a ci ˛

agi

A

= (A

1

, . . . , A

n

), przy czym

m

≪ n

.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.3/28

background image

Sortowanie kubełkowe

Dane jest uniwersum U

= {u

1

, . . . , u

m

}. Rozwa˙zane b˛ed ˛

a ci ˛

agi

A

= (A

1

, . . . , A

n

), przy czym

m

≪ n

.

Zatem w rozwa˙zanych ci ˛

agach wiele elementów b˛edzie si˛e powtarza´c.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.3/28

background image

Sortowanie kubełkowe

Dane jest uniwersum U

= {u

1

, . . . , u

m

}. Rozwa˙zane b˛ed ˛

a ci ˛

agi

A

= (A

1

, . . . , A

n

), przy czym

m

≪ n

.

Zatem w rozwa˙zanych ci ˛

agach wiele elementów b˛edzie si˛e powtarza´c.

Zastosowanie jakiegokolwiek algorytmu sortowania przez porównania

spowoduje, ze wielokrotnie b˛ed ˛

a porównywane elementy o tych samych

kluczach — to powoduje nieefektywno´s´c post˛epowania.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.3/28

background image

Sortowanie kubełkowe (cd.)

Idea algorytmu:

dr Anna M. Radzikowska, AiSD, wykład 6

– p.4/28

background image

Sortowanie kubełkowe (cd.)

Idea algorytmu:

Inicjujemy m pustych kolejek (kubełków).

dr Anna M. Radzikowska, AiSD, wykład 6

– p.4/28

background image

Sortowanie kubełkowe (cd.)

Idea algorytmu:

Inicjujemy m pustych kolejek (kubełków).

Przegl ˛

adamy ci ˛

ag wej´sciowy A wstawiaj ˛

ac kolejne elementy A

i

do kolejki o indeksie A

i

.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.4/28

background image

Sortowanie kubełkowe (cd.)

Idea algorytmu:

Inicjujemy m pustych kolejek (kubełków).

Przegl ˛

adamy ci ˛

ag wej´sciowy A wstawiaj ˛

ac kolejne elementy A

i

do kolejki o indeksie A

i

.

Scalamy tak utworzone kolejki.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.4/28

background image

Sortowanie kubełkowe (cd.)

Idea algorytmu:

Inicjujemy m pustych kolejek (kubełków).

Przegl ˛

adamy ci ˛

ag wej´sciowy A wstawiaj ˛

ac kolejne elementy A

i

do kolejki o indeksie A

i

.

Scalamy tak utworzone kolejki.

Kopiujemy elementy z utworzonej kolejki do oryginalnej

tablicy A.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.4/28

background image

Sorowanie kubełkowe (cd.)

Zakładamy, ˙ze dane s ˛

a nast˛epuj ˛

ace deklaracje:

Q : array

[1..m] of queue;

{tablica m kolejek}

Init

(q) — inicjalizacja kolejki q.

Insert

(q, x) — wstaw element x do kolejki q.

Concatenate

(q

1

, q

2

) — zł ˛

acz kolejki q

1

i q

2

tworz ˛

ac zmodyfikowan ˛

a

kolejk˛e q

1

(tzn. do kolejki q

1

doł ˛

acz kolejk˛e q

2

, wynikowa kolejka na q

1

).

DeQueue

(q) — usu´n pierwszy element z kolejki q.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.5/28

background image

Sortowanie kubełkowe — algorytm

1

begin

2

for i

:= 1 to m do Init(Q

i

) od;

3

for i

:= 1 to n do Insert(A

i

, Q

A

i

) od;

4

for i

:= 2 to m do Concatenate(Q

1

, Q

i

) od;

5

for i

:= 1 to n do A

i

:=DeQueue(Q

1

) od;

6

end;

dr Anna M. Radzikowska, AiSD, wykład 6

– p.6/28

background image

Zło˙zono´s´c czasowa

Koszt ka˙zdej operacji kolejkowej —

Θ(1)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.7/28

background image

Zło˙zono´s´c czasowa

Koszt ka˙zdej operacji kolejkowej —

Θ(1)

P˛etla (2) obróci si˛e m razy — koszt tej p˛etli

Θ(m)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.7/28

background image

Zło˙zono´s´c czasowa

Koszt ka˙zdej operacji kolejkowej —

Θ(1)

P˛etla (2) obróci si˛e m razy — koszt tej p˛etli

Θ(m)

P˛etla (3) obróci si˛e n razy — jej koszt

Θ(n)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.7/28

background image

Zło˙zono´s´c czasowa

Koszt ka˙zdej operacji kolejkowej —

Θ(1)

P˛etla (2) obróci si˛e m razy — koszt tej p˛etli

Θ(m)

P˛etla (3) obróci si˛e n razy — jej koszt

Θ(n)

P˛etla (4) obróci si˛e m

− 1 razy — jej koszt Θ(m)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.7/28

background image

Zło˙zono´s´c czasowa

Koszt ka˙zdej operacji kolejkowej —

Θ(1)

P˛etla (2) obróci si˛e m razy — koszt tej p˛etli

Θ(m)

P˛etla (3) obróci si˛e n razy — jej koszt

Θ(n)

P˛etla (4) obróci si˛e m

− 1 razy — jej koszt Θ(m)

P˛etla (5) obróci si˛e n razy — jej koszt

Θ(n).

dr Anna M. Radzikowska, AiSD, wykład 6

– p.7/28

background image

Zło˙zono´s´c czasowa

Koszt ka˙zdej operacji kolejkowej —

Θ(1)

P˛etla (2) obróci si˛e m razy — koszt tej p˛etli

Θ(m)

P˛etla (3) obróci si˛e n razy — jej koszt

Θ(n)

P˛etla (4) obróci si˛e m

− 1 razy — jej koszt Θ(m)

P˛etla (5) obróci si˛e n razy — jej koszt

Θ(n).

Zatem T

(n) = C

1

n

+ C

2

n

+ C

3

m

+ C

4

n, czyli T

(n) = Θ(n).

dr Anna M. Radzikowska, AiSD, wykład 6

– p.7/28

background image

Sortowanie zewn˛etrzne

dr Anna M. Radzikowska, AiSD, wykład 6

– p.8/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porzadkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porzadkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (3, 6, 8, 9, 12)

B

= (1, 2, 4, 5, 7, 10, 11).

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (3, 6, 8, 9, 12)

B

= (1, 2, 4, 5, 7, 10, 11).

Ci ˛

ag wynikowy: C

=

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (3, 6, 8, 9, 12)

B

= (2, 4, 5, 7, 10, 11).

Ci ˛

ag wynikowy: C

= (1)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (3, 6, 8, 9, 12)

B

= (4, 5, 7, 10, 11).

Ci ˛

ag wynikowy: C

= (1, 2)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (6, 8, 9, 12)

B

= (4, 5, 7, 10, 11).

Ci ˛

ag wynikowy: C

= (1, 2, 3)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (6, 8, 9, 12)

B

= (5, 7, 10, 11).

Ci ˛

ag wynikowy: C

= (1, 2, 3, 4)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (6, 8, 9, 12)

B

= (7, 10, 11).

Ci ˛

ag wynikowy: C

= (1, 2, 3, 4, 5)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (8, 9, 12)

B

= (7, 10, 11).

Ci ˛

ag wynikowy: C

= (1, 2, 3, 4, 5, 6)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (8, 9, 12)

B

= (10, 11).

Ci ˛

ag wynikowy: C

= (1, 2, 3, 4, 5, 6, 7)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (9, 12)

B

= (10, 11).

Ci ˛

ag wynikowy: C

= (1, 2, 3, 4, 5, 6, 7, 8)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (12)

B

= (10, 11).

Ci ˛

ag wynikowy: C

= (1, 2, 3, 4, 5, 6, 7, 8, 9)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (12)

B

= (11).

Ci ˛

ag wynikowy: C

= (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= (12)

B

= ().

Ci ˛

ag wynikowy: C

= (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= ()

B

= ().

Ci ˛

ag wynikowy: C

= (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego

Sortowanie zewn˛etrzne

— porz ˛

adkowanie ci ˛

agów zapisanych na plikach i nie

mieszcz ˛

acych si˛e w pami˛eci wewn˛etrznej.

Scalanie

(ang. merge) — ł ˛

aczenie kilku ci ˛

agów uporz ˛

adkowanych w jeden

ci ˛

ag uporz ˛

adkowany.

Przykład 6.1

Dane s ˛

a dwa ci ˛

agi

A

= ()

B

= ().

Ci ˛

ag wynikowy: C

= (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

W sortowaniu zewn˛etrznym wykorzystuje si˛e pliki pomocnicze.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.9/28

background image

Idea sortowania zewn˛etrznego (cd.)

Dany jest ci ˛

ag A

= (A

1

, . . . , A

N

) elementów uniwersum U zapisany na pliku.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.10/28

background image

Idea sortowania zewn˛etrznego (cd.)

Dany jest ci ˛

ag A

= (A

1

, . . . , A

N

) elementów uniwersum U zapisany na pliku.

Blok

— pewien posortowany podci ˛

ag ci ˛

agu A.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.10/28

background image

Idea sortowania zewn˛etrznego (cd.)

Dany jest ci ˛

ag A

= (A

1

, . . . , A

N

) elementów uniwersum U zapisany na pliku.

Blok

— pewien posortowany podci ˛

ag ci ˛

agu A.

Przykład 6.2

W ci ˛

agu A

= (3, 5, 6, 7, 9, 1, 4, 8, 10, 2, 12) wyst˛epuj ˛

a 3 najdłu˙zsze bloki:

(3, 5, 6, 7, 9), (1, 4, 8, 10), (2, 12).

dr Anna M. Radzikowska, AiSD, wykład 6

– p.10/28

background image

Idea sortowania zewn˛etrznego (cd.)

Dany jest ci ˛

ag A

= (A

1

, . . . , A

N

) elementów uniwersum U zapisany na pliku.

Blok

— pewien posortowany podci ˛

ag ci ˛

agu A.

Przykład 6.2

W ci ˛

agu A

= (3, 5, 6, 7, 9, 1, 4, 8, 10, 2, 12) wyst˛epuj ˛

a 3 najdłu˙zsze bloki:

(3, 5, 6, 7, 9), (1, 4, 8, 10), (2, 12).

Metody sortowania zewn˛etrznego obejmuj ˛

a zwykle 2 główne etapy:

tworzenie bloków pocz ˛

atkowych i ich dystrybucja do plików

pomocniczych

scalanie bloków pobieranych z plików pomocniczych do chwili

utworzenia 1 bloku.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.10/28

background image

Ł ˛

aczenie proste — metoda 1

Zakładamy, ˙ze dane wej´sciowe zapisane s ˛

a na pliku p

0

i dysponujemy k

plikami pomocniczymi p

1

, . . . , p

k

.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.11/28

background image

Ł ˛

aczenie proste — metoda 1

Zakładamy, ˙ze dane wej´sciowe zapisane s ˛

a na pliku p

0

i dysponujemy k

plikami pomocniczymi p

1

, . . . , p

k

.

1. Najprostsza metoda:

dr Anna M. Radzikowska, AiSD, wykład 6

– p.11/28

background image

Ł ˛

aczenie proste — metoda 1

Zakładamy, ˙ze dane wej´sciowe zapisane s ˛

a na pliku p

0

i dysponujemy k

plikami pomocniczymi p

1

, . . . , p

k

.

1. Najprostsza metoda:

(i)

d

:= 1

{d – długo´s´c aktualnego bloku}

dr Anna M. Radzikowska, AiSD, wykład 6

– p.11/28

background image

Ł ˛

aczenie proste — metoda 1

Zakładamy, ˙ze dane wej´sciowe zapisane s ˛

a na pliku p

0

i dysponujemy k

plikami pomocniczymi p

1

, . . . , p

k

.

1. Najprostsza metoda:

(i)

d

:= 1

{d – długo´s´c aktualnego bloku}

(ii)

bloki długo´sci d przenosimy kolejno na pliki p

1

, . . . , p

k

, p

1

, . . .

dr Anna M. Radzikowska, AiSD, wykład 6

– p.11/28

background image

Ł ˛

aczenie proste — metoda 1

Zakładamy, ˙ze dane wej´sciowe zapisane s ˛

a na pliku p

0

i dysponujemy k

plikami pomocniczymi p

1

, . . . , p

k

.

1. Najprostsza metoda:

(i)

d

:= 1

{d – długo´s´c aktualnego bloku}

(ii)

bloki długo´sci d przenosimy kolejno na pliki p

1

, . . . , p

k

, p

1

, . . .

(iii)

scalamy po 1 bloku z plików pomocniczych zapisuj ˛

ac blok wynikowy na

p

0

dr Anna M. Radzikowska, AiSD, wykład 6

– p.11/28

background image

Ł ˛

aczenie proste — metoda 1

Zakładamy, ˙ze dane wej´sciowe zapisane s ˛

a na pliku p

0

i dysponujemy k

plikami pomocniczymi p

1

, . . . , p

k

.

1. Najprostsza metoda:

(i)

d

:= 1

{d – długo´s´c aktualnego bloku}

(ii)

bloki długo´sci d przenosimy kolejno na pliki p

1

, . . . , p

k

, p

1

, . . .

(iii)

scalamy po 1 bloku z plików pomocniczych zapisuj ˛

ac blok wynikowy na

p

0

(iv)

d

:= k·d

dr Anna M. Radzikowska, AiSD, wykład 6

– p.11/28

background image

Ł ˛

aczenie proste — metoda 1

Zakładamy, ˙ze dane wej´sciowe zapisane s ˛

a na pliku p

0

i dysponujemy k

plikami pomocniczymi p

1

, . . . , p

k

.

1. Najprostsza metoda:

(i)

d

:= 1

{d – długo´s´c aktualnego bloku}

(ii)

bloki długo´sci d przenosimy kolejno na pliki p

1

, . . . , p

k

, p

1

, . . .

(iii)

scalamy po 1 bloku z plików pomocniczych zapisuj ˛

ac blok wynikowy na

p

0

(iv)

d

:= k·d

(v)

powtarzamy czynno´sci

(ii)

(iv)

do chwili, gdy na p

0

b˛edzie 1 blok.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.11/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Przykład 6.3

Niech k

= 3.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.12/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Przykład 6.3

Niech k

= 3.

p

0

: (3, 9, 7, 1, 8, 2, 5, 4, 6)

p

1

:

p

2

:

p

3

:

dr Anna M. Radzikowska, AiSD, wykład 6

– p.12/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Przykład 6.3

Niech k

= 3.

p

0

: (1, 8, 2, 5, 4, 6)

p

1

: 3 |

p

2

: 9 |

p

3

: 7 |

dr Anna M. Radzikowska, AiSD, wykład 6

– p.12/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Przykład 6.3

Niech k

= 3.

p

0

: (5, 4, 6)

p

1

: 3 | 1 |

p

2

: 9 | 8 |

p

3

: 7 | 2 |

dr Anna M. Radzikowska, AiSD, wykład 6

– p.12/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Przykład 6.3

Niech k

= 3.

p

0

: ()

p

1

: 3 | 1 | 5 |

p

2

: 9 | 8 | 4 |

p

3

: 7 | 2 | 6 |

dr Anna M. Radzikowska, AiSD, wykład 6

– p.12/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Przykład 6.3

Niech k

= 3.

p

0

: (3, 7, 9 |)

p

1

: 1 | 5 |

p

2

: 8 | 4 |

p

3

: 2 | 6 |

dr Anna M. Radzikowska, AiSD, wykład 6

– p.12/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Przykład 6.3

Niech k

= 3.

p

0

: (3, 7, 9 | 1, 2, 8 |)

p

1

: 5 |

p

2

: 4 |

p

3

: 6 |

dr Anna M. Radzikowska, AiSD, wykład 6

– p.12/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Przykład 6.3

Niech k

= 3.

p

0

: (3, 7, 9 | 1, 2, 8 | 4, 5, 6)

p

1

: ()

p

2

: ()

p

3

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.12/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Przykład 6.3

Niech k

= 3.

p

0

: ()

p

1

: (3, 7, 9)

p

2

: (1, 2, 8)

p

3

: (4, 5, 6)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.12/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Przykład 6.3

Niech k

= 3.

p

0

: (1, 2, 3, 4, 5, 6, 7, 8, 9)

p

1

: ()

p

2

: ()

p

3

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.12/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Metoda mało efektywna — ka˙zdy blok jest dwukrotnie kopiowany:

raz w fazie dystrybucji na pliki pomocnicze,

drugi raz w fazie scalania.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.13/28

background image

Ł ˛

aczenie proste — metoda 1 (cd.)

Metoda mało efektywna — ka˙zdy blok jest dwukrotnie kopiowany:

raz w fazie dystrybucji na pliki pomocnicze,

drugi raz w fazie scalania.

Udoskonalenie —- poł ˛

aczenie fazy dystrubucji z faz ˛

a sortowania.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.13/28

background image

Ł ˛

aczenie proste — metoda 2

Mamy

2k − 1 plików pomocniczych. Dane wej´sciowe na pliku p

0

.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.14/28

background image

Ł ˛

aczenie proste — metoda 2

Mamy

2k − 1 plików pomocniczych. Dane wej´sciowe na pliku p

0

.

Algorytm:

(i)

d

:= 1

{ d — aktualna długo´s´c bloku}

dr Anna M. Radzikowska, AiSD, wykład 6

– p.14/28

background image

Ł ˛

aczenie proste — metoda 2

Mamy

2k − 1 plików pomocniczych. Dane wej´sciowe na pliku p

0

.

Algorytm:

(i)

d

:= 1

{ d — aktualna długo´s´c bloku}

(ii)

bloki długo´sci d przenosimy z p

0

na pliki pomocnicze

p

k

, p

k+1

, . . . , p

2

k−1

, p

k

, . . .

dr Anna M. Radzikowska, AiSD, wykład 6

– p.14/28

background image

Ł ˛

aczenie proste — metoda 2

Mamy

2k − 1 plików pomocniczych. Dane wej´sciowe na pliku p

0

.

Algorytm:

(i)

d

:= 1

{ d — aktualna długo´s´c bloku}

(ii)

bloki długo´sci d przenosimy z p

0

na pliki pomocnicze

p

k

, p

k+1

, . . . , p

2

k−1

, p

k

, . . .

(iii)

scalamy po 1 bloku długo´sci d z plików p

k

, . . . , p

2

k−1

umieszczaj ˛

ac boki

wynikowe kolejno na p

0

, . . . , p

k−1

.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.14/28

background image

Ł ˛

aczenie proste — metoda 2

Mamy

2k − 1 plików pomocniczych. Dane wej´sciowe na pliku p

0

.

Algorytm:

(i)

d

:= 1

{ d — aktualna długo´s´c bloku}

(ii)

bloki długo´sci d przenosimy z p

0

na pliki pomocnicze

p

k

, p

k+1

, . . . , p

2

k−1

, p

k

, . . .

(iii)

scalamy po 1 bloku długo´sci d z plików p

k

, . . . , p

2

k−1

umieszczaj ˛

ac boki

wynikowe kolejno na p

0

, . . . , p

k−1

.

(iv)

zmieniamy nazwy plików przyjmuj ˛

ac p

k

:= p

0

, . . . , p

2

k−1

:= p

k−1

odwracaj ˛

ac rol˛e plików wej´sciowch i wyj´sciowych.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.14/28

background image

Ł ˛

aczenie proste — metoda 2

Mamy

2k − 1 plików pomocniczych. Dane wej´sciowe na pliku p

0

.

Algorytm:

(i)

d

:= 1

{ d — aktualna długo´s´c bloku}

(ii)

bloki długo´sci d przenosimy z p

0

na pliki pomocnicze

p

k

, p

k+1

, . . . , p

2

k−1

, p

k

, . . .

(iii)

scalamy po 1 bloku długo´sci d z plików p

k

, . . . , p

2

k−1

umieszczaj ˛

ac boki

wynikowe kolejno na p

0

, . . . , p

k−1

.

(iv)

zmieniamy nazwy plików przyjmuj ˛

ac p

k

:= p

0

, . . . , p

2

k−1

:= p

k−1

odwracaj ˛

ac rol˛e plików wej´sciowch i wyj´sciowych.

(v)

powtarzamy czynno´sci

(iii)

(iv)

do chwili, a˙z na p

0

(ew. p

k

)

b˛edzie 1 blok, a pliki pomocnicze b˛eda puste.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.14/28

background image

Ł ˛

aczenie proste — metoda 2 (cd.)

Przykład 6.4

dr Anna M. Radzikowska, AiSD, wykład 6

– p.15/28

background image

Ł ˛

aczenie proste — metoda 2 (cd.)

Przykład 6.4

Niech k

= 2.

p

0

= (3, 8, 10, 21, 12, 4, 2, 11, 18, 9, 20, 7, 1, 5, 25, 15)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.15/28

background image

Ł ˛

aczenie proste — metoda 2 (cd.)

Przykład 6.4

Niech k

= 2.

p

0

= (3, 8, 10, 21, 12, 4, 2, 11, 18, 9, 20, 7, 1, 5, 25, 15)

Faza 1.

p

2

: 3 | 10 | 12 |2 | 18 | 20 | 1 | 25

p

3

: 8 | 21 | 4 | 11 | 9 | 7 | 5 | 15

dr Anna M. Radzikowska, AiSD, wykład 6

– p.15/28

background image

Ł ˛

aczenie proste — metoda 2 (cd.)

Przykład 6.4

Niech k

= 2.

p

0

= (3, 8, 10, 21, 12, 4, 2, 11, 18, 9, 20, 7, 1, 5, 25, 15)

Faza 1.

p

2

: 3 | 10 | 12 |2 | 18 | 20 | 1 | 25

p

3

: 8 | 21 | 4 | 11 | 9 | 7 | 5 | 15

Faza 2.

p

2

(p

0

) : 3, 8 | 4, 12 | 9, 18 | 1, 5

p

3

(p

1

) : 10, 21 | 2, 11 | 7, 20 | 15, 25

dr Anna M. Radzikowska, AiSD, wykład 6

– p.15/28

background image

Ł ˛

aczenie proste — metoda 2 (cd.)

Faza 2.

p

2

(p

0

) : 3, 8 | 4, 12 | 9, 18 | 1, 5

p

3

(p

1

) : 10, 21 | 2, 11 | 7, 20 | 15, 25

dr Anna M. Radzikowska, AiSD, wykład 6

– p.16/28

background image

Ł ˛

aczenie proste — metoda 2 (cd.)

Faza 2.

p

2

(p

0

) : 3, 8 | 4, 12 | 9, 18 | 1, 5

p

3

(p

1

) : 10, 21 | 2, 11 | 7, 20 | 15, 25

Faza 3.

p

2

: 3, 8, 10, 21 | 7, 9, 18, 20

p

3

: 2, 4, 11, 12 | 1, 5, 15, 25

dr Anna M. Radzikowska, AiSD, wykład 6

– p.16/28

background image

Ł ˛

aczenie proste — metoda 2 (cd.)

Faza 2.

p

2

(p

0

) : 3, 8 | 4, 12 | 9, 18 | 1, 5

p

3

(p

1

) : 10, 21 | 2, 11 | 7, 20 | 15, 25

Faza 3.

p

2

: 3, 8, 10, 21 | 7, 9, 18, 20

p

3

: 2, 4, 11, 12 | 1, 5, 15, 25

Faza 4.

p

2

(p

0

) : 2, 3, 4, 8, 10, 11, 12, 21

p

3

(p

1

) : 1, 5, 7, 9, 15, 18, 20, 25

dr Anna M. Radzikowska, AiSD, wykład 6

– p.16/28

background image

Ł ˛

aczenie proste — metoda 2 (cd.)

Faza 2.

p

2

(p

0

) : 3, 8 | 4, 12 | 9, 18 | 1, 5

p

3

(p

1

) : 10, 21 | 2, 11 | 7, 20 | 15, 25

Faza 3.

p

2

: 3, 8, 10, 21 | 7, 9, 18, 20

p

3

: 2, 4, 11, 12 | 1, 5, 15, 25

Faza 4.

p

2

(p

0

) : 2, 3, 4, 8, 10, 11, 12, 21

p

3

(p

1

) : 1, 5, 7, 9, 15, 18, 20, 25

Faza 5.

p

2

: 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15, 18, 20, 21, 25

p

3

: ().

dr Anna M. Radzikowska, AiSD, wykład 6

– p.16/28

background image

Łaczenie naturalne

W obu poprzednich metodach nie wykorzystujemy ewentualnego

cz˛e´sciowego uporz ˛

adkowania pliku ´zródłowego.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.17/28

background image

Łaczenie naturalne

W obu poprzednich metodach nie wykorzystujemy ewentualnego

cz˛e´sciowego uporz ˛

adkowania pliku ´zródłowego.

Metody ł ˛

aczenia naturalnego działaj ˛

a analogicznie do metod ł ˛

aczenia

prostego z tym, ˙ze bloki pocz ˛

atkowe to najdłu˙zsze podci ˛

agi

uporz ˛

adkowane pliku wej´sciowego.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.17/28

background image

Łaczenie naturalne

W obu poprzednich metodach nie wykorzystujemy ewentualnego

cz˛e´sciowego uporz ˛

adkowania pliku ´zródłowego.

Metody ł ˛

aczenia naturalnego działaj ˛

a analogicznie do metod ł ˛

aczenia

prostego z tym, ˙ze bloki pocz ˛

atkowe to najdłu˙zsze podci ˛

agi

uporz ˛

adkowane pliku wej´sciowego.

W konsekwencji, na ogół

dr Anna M. Radzikowska, AiSD, wykład 6

– p.17/28

background image

Łaczenie naturalne

W obu poprzednich metodach nie wykorzystujemy ewentualnego

cz˛e´sciowego uporz ˛

adkowania pliku ´zródłowego.

Metody ł ˛

aczenia naturalnego działaj ˛

a analogicznie do metod ł ˛

aczenia

prostego z tym, ˙ze bloki pocz ˛

atkowe to najdłu˙zsze podci ˛

agi

uporz ˛

adkowane pliku wej´sciowego.

W konsekwencji, na ogół

bloki pocz ˛

atkowe maj ˛

a ró˙zn ˛

a długo´s´c

dr Anna M. Radzikowska, AiSD, wykład 6

– p.17/28

background image

Łaczenie naturalne

W obu poprzednich metodach nie wykorzystujemy ewentualnego

cz˛e´sciowego uporz ˛

adkowania pliku ´zródłowego.

Metody ł ˛

aczenia naturalnego działaj ˛

a analogicznie do metod ł ˛

aczenia

prostego z tym, ˙ze bloki pocz ˛

atkowe to najdłu˙zsze podci ˛

agi

uporz ˛

adkowane pliku wej´sciowego.

W konsekwencji, na ogół

bloki pocz ˛

atkowe maj ˛

a ró˙zn ˛

a długo´s´c

wyst˛epuje mniej faz.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.17/28

background image

Łaczenie naturalne

W obu poprzednich metodach nie wykorzystujemy ewentualnego

cz˛e´sciowego uporz ˛

adkowania pliku ´zródłowego.

Metody ł ˛

aczenia naturalnego działaj ˛

a analogicznie do metod ł ˛

aczenia

prostego z tym, ˙ze bloki pocz ˛

atkowe to najdłu˙zsze podci ˛

agi

uporz ˛

adkowane pliku wej´sciowego.

W konsekwencji, na ogół

bloki pocz ˛

atkowe maj ˛

a ró˙zn ˛

a długo´s´c

wyst˛epuje mniej faz.

Nale˙zy tu uwzgl˛edni´c przypadek “sklejania si˛e” bloków pocz ˛

atkowych –

kolejny blok na pliku pomocniczym rozpoczyna si˛e od elementu

wi˛ekszego od ostatniego elementu poprzedniego bloku na tym pliku.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.17/28

background image

Ł ˛

aczenie naturalne (cd.)

Przykład 6.4 (cd.)

p

0

= (3, 8, 10, 21, 12, 4, 2, 11, 18, 9, 20, 7, 1, 5, 25, 15).

dr Anna M. Radzikowska, AiSD, wykład 6

– p.18/28

background image

Ł ˛

aczenie naturalne (cd.)

Przykład 6.4 (cd.)

p

0

= (3, 8, 10, 21, 12, 4, 2, 11, 18, 9, 20, 7, 1, 5, 25, 15).

Faza 1.

p

2

: 3, 8, 10, 21 | 4

|

9, 20 | 1, 5, 25

p

3

: 12 | 2, 11, 18 | 7

|

15

dr Anna M. Radzikowska, AiSD, wykład 6

– p.18/28

background image

Ł ˛

aczenie naturalne (cd.)

Przykład 6.4 (cd.)

p

0

= (3, 8, 10, 21, 12, 4, 2, 11, 18, 9, 20, 7, 1, 5, 25, 15).

Faza 1.

p

2

: 3, 8, 10, 21 | 4

|

9, 20 | 1, 5, 25

p

3

: 12 | 2, 11, 18 | 7

|

15

Zauwa˙zmy, ˙ze na pliku p

2

blok 2 “skleja si˛e” z blokiem 3. Podobnie na pliku

p

3

blok 3 z blokiem 4.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.18/28

background image

Ł ˛

aczenie naturalne (cd.)

Przykład 6.4 (cd.)

p

0

= (3, 8, 10, 21, 12, 4, 2, 11, 18, 9, 20, 7, 1, 5, 25, 15).

Faza 1.

p

2

: 3, 8, 10, 21 | 4

|

9, 20 | 1, 5, 25

p

3

: 12 | 2, 11, 18 | 7

|

15

Zauwa˙zmy, ˙ze na pliku p

2

blok 2 “skleja si˛e” z blokiem 3. Podobnie na pliku

p

3

blok 3 z blokiem 4.

Faza 1 (poprawiona).

p

2

: 3, 8, 10, 21 | 4, 9, 20 | 1, 5, 25

p

3

: 12 | 2, 11, 18 | 7, 15.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.18/28

background image

Ł ˛

aczenie naturalne (cd.)

Faza 1.

p

2

: 3, 8, 10, 21 | 4, 9, 20 | 1, 5, 25

p

3

: 12 | 2, 11, 18 | 7, 15.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.19/28

background image

Ł ˛

aczenie naturalne (cd.)

Faza 1.

p

2

: 3, 8, 10, 21 | 4, 9, 20 | 1, 5, 25

p

3

: 12 | 2, 11, 18 | 7, 15.

Faza 2.

p

0

: 3, 8, 10, 12, 21 | 1, 5, 7, 15, 25

p

1

: 2, 4, 9, 11, 18, 20.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.19/28

background image

Ł ˛

aczenie naturalne (cd.)

Faza 1.

p

2

: 3, 8, 10, 21 | 4, 9, 20 | 1, 5, 25

p

3

: 12 | 2, 11, 18 | 7, 15.

Faza 2.

p

0

: 3, 8, 10, 12, 21 | 1, 5, 7, 15, 25

p

1

: 2, 4, 9, 11, 18, 20.

Faza 3.

p

2

: 2, 3, 4, 8, 9, 10, 11, 12, 18, 20, 21

p

3

: 1, 5, 7, 15, 25.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.19/28

background image

Ł ˛

aczenie naturalne (cd.)

Faza 1.

p

2

: 3, 8, 10, 21 | 4, 9, 20 | 1, 5, 25

p

3

: 12 | 2, 11, 18 | 7, 15.

Faza 2.

p

0

: 3, 8, 10, 12, 21 | 1, 5, 7, 15, 25

p

1

: 2, 4, 9, 11, 18, 20.

Faza 3.

p

2

: 2, 3, 4, 8, 9, 10, 11, 12, 18, 20, 21

p

3

: 1, 5, 7, 15, 25.

Faza 4.

p

0

: 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15, 18, 20, 21, 25

p

1

: ().

dr Anna M. Radzikowska, AiSD, wykład 6

– p.19/28

background image

Metoda 3

Dane wej´sciowe na pliku p

0

. Mamy

2k − 1 plików pomocniczych.

Kolejna metoda uwzgl˛ednia sposób tworzenia bloków pocz ˛

atkowych.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.20/28

background image

Metoda 3

Dane wej´sciowe na pliku p

0

. Mamy

2k − 1 plików pomocniczych.

Kolejna metoda uwzgl˛ednia sposób tworzenia bloków pocz ˛

atkowych.

Algorytm:

1

begin

2

i

:= k

{ i – numer aktualnego pliku pomocniczego}

3

while

¬ eof(p

0

) do

4

we´z m elementów z p

0

;

5

posortuj je jednym ze znanych algorytmów sortowania tablic;

6

prze´slij utworzony blok na plik pomocniczy p

i

;

7

i

:= k + ((i + 1) mod k)

8

od;

9

end;

dr Anna M. Radzikowska, AiSD, wykład 6

– p.20/28

background image

Metoda 3 (cd.)

Teraz bloki maj ˛

a (teoretycznie) jednakow ˛

a długo´s´c m.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.21/28

background image

Metoda 3 (cd.)

Teraz bloki maj ˛

a (teoretycznie) jednakow ˛

a długo´s´c m.

Je´sli uwzgl˛ednimy przypadek “sklejania si˛e” bloków, mo˙zna wykorzysta´c

tablic˛e k–elementow ˛

a, w której zapami˛etane b˛ed ˛

a ostatnie elementy

bloków na plikach pomocniczych.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.21/28

background image

Metoda 4

W tej metodzie wykorzystujemy struktur˛e kopca z odwróconym

porz ˛

adkiem — teraz element minimalny jest w korzeniu.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.22/28

background image

Metoda 4

W tej metodzie wykorzystujemy struktur˛e kopca z odwróconym

porz ˛

adkiem — teraz element minimalny jest w korzeniu.

Celem jest uzyskanie mo˙zliwie najdłu˙zszych bloków pocz ˛

atkowych.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.22/28

background image

Metoda 4

W tej metodzie wykorzystujemy struktur˛e kopca z odwróconym

porz ˛

adkiem — teraz element minimalny jest w korzeniu.

Celem jest uzyskanie mo˙zliwie najdłu˙zszych bloków pocz ˛

atkowych.

Z ka˙zdym elementem kopca zwi ˛

azany jest dodatkowy atrybut nr b˛ed ˛

acy

numerem bloku odpowiadaj ˛

acemu temu elementowi. Teraz relacja

porz ˛

adku < ma posta´c:

Niech E

1

= (e

1

, n

1

) i E

2

= (e

2

, n

2

) b˛ed ˛

a dwoma elementami. E

1

< E

2

wtt gdy

dr Anna M. Radzikowska, AiSD, wykład 6

– p.22/28

background image

Metoda 4

W tej metodzie wykorzystujemy struktur˛e kopca z odwróconym

porz ˛

adkiem — teraz element minimalny jest w korzeniu.

Celem jest uzyskanie mo˙zliwie najdłu˙zszych bloków pocz ˛

atkowych.

Z ka˙zdym elementem kopca zwi ˛

azany jest dodatkowy atrybut nr b˛ed ˛

acy

numerem bloku odpowiadaj ˛

acemu temu elementowi. Teraz relacja

porz ˛

adku < ma posta´c:

Niech E

1

= (e

1

, n

1

) i E

2

= (e

2

, n

2

) b˛ed ˛

a dwoma elementami. E

1

< E

2

wtt gdy

n

1

< n

2

dr Anna M. Radzikowska, AiSD, wykład 6

– p.22/28

background image

Metoda 4

W tej metodzie wykorzystujemy struktur˛e kopca z odwróconym

porz ˛

adkiem — teraz element minimalny jest w korzeniu.

Celem jest uzyskanie mo˙zliwie najdłu˙zszych bloków pocz ˛

atkowych.

Z ka˙zdym elementem kopca zwi ˛

azany jest dodatkowy atrybut nr b˛ed ˛

acy

numerem bloku odpowiadaj ˛

acemu temu elementowi. Teraz relacja

porz ˛

adku < ma posta´c:

Niech E

1

= (e

1

, n

1

) i E

2

= (e

2

, n

2

) b˛ed ˛

a dwoma elementami. E

1

< E

2

wtt gdy

n

1

< n

2

je´sli n

1

= n

2

, to e

1

< e

2

.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.22/28

background image

Metoda 4 — ogólna idea

(i)

Wczytujemy z pliku p

0

m elementów i z nich budujemy kopiec.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.23/28

background image

Metoda 4 — ogólna idea

(i)

Wczytujemy z pliku p

0

m elementów i z nich budujemy kopiec.

(ii)

Wypisujemy element z korzenia na plik p

i

i na jego miejsce wczytujemy

kolejny element x z pliku danych (o ile p

0

nie jest pusty; wpp wypisujemy

w porz ˛

adku rosn ˛

acym pozostałe elementy kopca).

dr Anna M. Radzikowska, AiSD, wykład 6

– p.23/28

background image

Metoda 4 — ogólna idea

(i)

Wczytujemy z pliku p

0

m elementów i z nich budujemy kopiec.

(ii)

Wypisujemy element z korzenia na plik p

i

i na jego miejsce wczytujemy

kolejny element x z pliku danych (o ile p

0

nie jest pusty; wpp wypisujemy

w porz ˛

adku rosn ˛

acym pozostałe elementy kopca).

Je´sli x jest wi˛ekszy od elementu wypisanego, to z x

zwi ˛

azujemy bie˙z ˛

acy numer bloku

dr Anna M. Radzikowska, AiSD, wykład 6

– p.23/28

background image

Metoda 4 — ogólna idea

(i)

Wczytujemy z pliku p

0

m elementów i z nich budujemy kopiec.

(ii)

Wypisujemy element z korzenia na plik p

i

i na jego miejsce wczytujemy

kolejny element x z pliku danych (o ile p

0

nie jest pusty; wpp wypisujemy

w porz ˛

adku rosn ˛

acym pozostałe elementy kopca).

Je´sli x jest wi˛ekszy od elementu wypisanego, to z x

zwi ˛

azujemy bie˙z ˛

acy numer bloku

Je´sli x jest mniejszy od elementu wypisanego, to z x

zwi ˛

azujemy numer nast˛epnego bloku.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.23/28

background image

Metoda 4 — ogólna idea

(i)

Wczytujemy z pliku p

0

m elementów i z nich budujemy kopiec.

(ii)

Wypisujemy element z korzenia na plik p

i

i na jego miejsce wczytujemy

kolejny element x z pliku danych (o ile p

0

nie jest pusty; wpp wypisujemy

w porz ˛

adku rosn ˛

acym pozostałe elementy kopca).

Je´sli x jest wi˛ekszy od elementu wypisanego, to z x

zwi ˛

azujemy bie˙z ˛

acy numer bloku

Je´sli x jest mniejszy od elementu wypisanego, to z x

zwi ˛

azujemy numer nast˛epnego bloku.

Je´sli wszystkie elementy kopca maj ˛

a ten sam numer bloku,

to zwi˛ekszamy numer aktualnego boku i zapisujemy nowy

blok na nast˛epny plik pomocniczy.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.23/28

background image

Metoda 4 — ogólna idea

(i)

Wczytujemy z pliku p

0

m elementów i z nich budujemy kopiec.

(ii)

Wypisujemy element z korzenia na plik p

i

i na jego miejsce wczytujemy

kolejny element x z pliku danych (o ile p

0

nie jest pusty; wpp wypisujemy

w porz ˛

adku rosn ˛

acym pozostałe elementy kopca).

Je´sli x jest wi˛ekszy od elementu wypisanego, to z x

zwi ˛

azujemy bie˙z ˛

acy numer bloku

Je´sli x jest mniejszy od elementu wypisanego, to z x

zwi ˛

azujemy numer nast˛epnego bloku.

Je´sli wszystkie elementy kopca maj ˛

a ten sam numer bloku,

to zwi˛ekszamy numer aktualnego boku i zapisujemy nowy

blok na nast˛epny plik pomocniczy.

(iii)

Poprawimy struktur˛e kopca i wracamy do

(ii)

.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.23/28

background image

Tworzenie bloków pocz ˛

atkowych

1

proc ReplacementSort(var p

0

: plik);

2

var A : array

[1..m] of U ;

{reprezentacja kopca}

3

N : array

[1..m] of U ;

{numery bloków elementów kopca}

4

p : array

[1..k] of plik;

{tablica plików pomocniczych}

5

last

: U ;

{ostatnio wypisany element}

6

i, nb, np, l : integer;

7

begin

8

BuildHeap

(m);

9

np

:= 1

{aktualny plik pomocniczy}

10

for i

:= 1 to m do N

i

:= 1; od;

11

nb

:= 1;

{number aktualnego bloku}

12

l

:= m;

{ilo´s´c elementów kopca o aktualnym nr bloku}

13

write(p

np

, A

1

);

dr Anna M. Radzikowska, AiSD, wykład 6

– p.24/28

background image

Tworzenie bloków pocz ˛

atkowych (cd.)

14

while

¬eof (p

0

) do

15

last

:= A

1

;

16

read(p

0

,A

1

);

17

if A

1

< last then

18

N

1

:= nb + 1;

19

l

:= l − 1;

20

if l

= 0 then

21

l

:= m; nb := nb + 1; np := (np mod k) + 1; fi;

22

fi;

23

Heapify_2

;

{poprawianie struktury kopca}

24

write(p

np

,A

1

);

25

od;

26

WriteHeap

;

27

end ReplacementSort;

dr Anna M. Radzikowska, AiSD, wykład 6

– p.25/28

background image

Poprawianie struktury kopca

1

proc Heapify_2;

2

var i, k, nb : int; x : U ;

3

begin

4

i

:= 1; k := 2; x := A

1

; nb

:= N

1

;

5

while k

≤ m do

6

if k

+ 1 ≤ m then

7

if

(A

k+1

, N

k+1

) < (A

k

, N

k

)

8

then k

:= k + 1 fi fi;

9

if

(A

k

, N

k

) < (x, nb)

10

then A

i

:= A

k

; N

i

:= N

k

; i

:= k; k = 2k; fi;

11

od;

12

A

i

:= x; N

i

:= nb;

13

end Heapify_2;

dr Anna M. Radzikowska, AiSD, wykład 6

– p.26/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (40, 25, 60, 20, 10, 80, 35, 20, 75, 15, 5, 85, 30, 50, 65, 45, 20, 30)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

40

,

25

,

60

,

20

,

10, 80, 35, 20, 75, 15, 5, 85, 30, 50, 65, 45, 20, 30)

Kopiec:

{40|1 , 25|1 , 60|1 ,

20|1

}

nb

= 1

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

10

,

80, 35, 20, 75, 15, 5, 85, 30, 50, 65, 45, 20, 30)

Kopiec:

{40|1 ,

25|1

,

60|1 ,

10|2

}

nb

= 1

p

1

: (20)

p

2

: ()

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

80

,

35, 20, 75, 15, 5, 85, 30, 50, 65, 45, 20, 30)

Kopiec:

{

40|1

,

80|1

,

60|1 , 10|2}

nb

= 1

p

1

: (20, 25)

p

2

: ()

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

35

,

20, 75, 15, 5, 85, 30, 50, 65, 45, 20, 30)

Kopiec:

{

35|2

,

80|1 ,

60|1

,

10|2}

nb

= 1

p

1

: (20, 25, 40)

p

2

: ()

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

20

,

75, 15, 5, 85, 30, 50, 65, 45, 20, 30)

Kopiec:

{35|2 ,

80|1

,

20|2

,

10|2}

nb

= 1

p

1

: (20, 25, 40, 60)

p

2

: ()

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

75

,

15, 5, 85, 30, 50, 65, 45, 20, 30)

Kopiec:

{35|2 ,

75|2

,

20|2 ,

10|2

}

nb

= 2

p

1

: (20, 25, 40, 60, 80)

p

2

: ()

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

15

,

5, 85, 30, 50, 65, 45, 20, 30)

Kopiec:

{35|2 , 75|2 , 20|2 ,

15|2

}

nb

= 2

p

1

: (20, 25, 40, 60, 80)

p

2

: (10)

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

5

,

85, 30, 50, 65, 45, 20, 30)

Kopiec:

{35|2 , 75|2 ,

20|2

,

5|3

}

nb

= 2

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15)

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

85

,

30, 50, 65, 45, 20, 30)

Kopiec:

{

35|2

,

75|2 ,

85|2

,

5|3}

nb

= 2

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20)

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

30

,

50, 65, 45, 20, 30)

Kopiec:

{

30|3

,

75|2

,

85|2 , 5|3}

nb

= 2

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20, 35)

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

50

,

65, 45, 20, 30)

Kopiec:

{30|3 ,

50|3

,

85|2

,

5|3}

nb

= 2

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20, 35, 75)

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

65

,

45, 20, 30)

Kopiec:

{30|3 , 50|3 ,

65|3

,

5|3

}

nb

= 3

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20, 35, 75, 85)

p

3

: ()

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

45

,

20, 30)

Kopiec:

{

30|3

,

50|3 , 65|3 ,

45|3

}

nb

= 3

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20, 35, 75, 85)

p

3

: (5)

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

20

,

30)

Kopiec:

{

20|4

,

50|3 , 65|3 ,

45|3

}

nb

= 3

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20, 35, 75, 85)

p

3

: (5, 30)

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= (

30

)

Kopiec:

{20|4 ,

50|3

,

65|3 ,

30|4

}

nb

= 3

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20, 35, 75, 85)

p

3

: (5, 30, 45)

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= ()

Kopiec:

{20|4 ,

65|3

,

30|4}

nb

= 3

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20, 35, 75, 85)

p

3

: (5, 30, 45, 50)

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= ()

Kopiec:

{

20|4

,

30|4}

nb

= 4

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20, 35, 75, 85)

p

3

: (5, 30, 45, 50, 65)

p

4

: ()

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= ()

Kopiec:

{

30|4

}

nb

= 4

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20, 35, 75, 85)

p

3

: (5, 30, 45, 50, 65)

p

4

: (20)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Metoda 4 — przykład

Przykład 6.5

m

= k = 4

p

0

= ()

Kopiec:

nb

= 4

p

1

: (20, 25, 40, 60, 80)

p

2

: (10, 15, 20, 35, 75, 85)

p

3

: (5, 30, 45, 50, 65)

p

4

: (20, 30)

dr Anna M. Radzikowska, AiSD, wykład 6

– p.27/28

background image

Dzi˛ekuj˛e za uwag˛e!

Pytania bardzo mile widziane.

dr Anna M. Radzikowska, AiSD, wykład 6

– p.28/28


Document Outline


Wyszukiwarka

Podobne podstrony:
aisd 06
MT st w 06
Kosci, kregoslup 28[1][1][1] 10 06 dla studentow
06 Kwestia potencjalności Aid 6191 ppt
06 Podstawy syntezy polimerówid 6357 ppt
06
06 Psych zaburz z somatoformiczne i dysocjacyjne
GbpUsd analysis for July 06 Part 1
Probl inter i kard 06'03
06 K6Z4
06 pamięć proceduralna schematy, skrypty, ramyid 6150 ppt
Sys Inf 03 Manning w 06
Ustawa z dnia 25 06 1999 r o świadcz pien z ubezp społ w razie choroby i macierz

więcej podobnych podstron