• Nie Znaleziono Wyników

1 Scalanie w miejscu dla ciągów długości √ n i n − √

N/A
N/A
Protected

Academic year: 2021

Share "1 Scalanie w miejscu dla ciągów długości √ n i n − √"

Copied!
3
0
0

Pełen tekst

(1)

Algorytmy i Struktury Danych, 3. ćwiczenia

2017-10-20

Spis treści

1 Scalanie w miejscu dla ciągów długości √

n i n −√

n 1

2 Scalanie w miejscu 1

3 Budowa kopca w algorytmie HeapSort 2

4 Analiza algorytmu QuickSort 2

1 Scalanie w miejscu dla ciągów długości √ n i n − √

n

Algorithm 1: Merge(A)

Dana jest tablica A zawierająca dwa uporządkowane rosnąco ciągi:

1..n −√

n i n −√

n + 1..n.

Posortuj (używając alg. insertion sort) ciąg n − 2√

n + 1..n Scal ciąg 1..n − 2√

n i n − 2√

n + 1..n −√

n używając obszaru n −√

n + 1..n jako bufor

Posortuj (używając alg. insertion sort) ciąg n −√

n + 1..n

2 Scalanie w miejscu

Knuth, Tom III, strona 698.

• podziel tablicę na bloki rozmiaru d√

ne, — Z1, Z2, . . ., Zm+2, (blok Zm+2

może być mniejszy,

• zamień blok leżący na połączeniu dwóch ciągów, z blokiem Zm+1, teraz każdy z bloków Z1, . . ., Zmjest uporządkowany,

• posortuj używając selection–sort bloki, wg. pierwszego elementu z bloków (jeśli dwa bloki mają ten sam element początkowy, to porównaj elementy końcowe)

• scal Z1, . . ., Zm używając Zm+1 jako bufora pomocniczego,

1

(2)

Algorithm 2: Z-Merge(Z) foreach i ∈ 1, . . . , m − 1 do

SimpleMerge(Zi,Zi+1,Zm+1)

(należy jeszcze pokazać, że taka procedura daje dobre uporządkowanie) — wskazówka: przed tym krokiem każdy element jest w inwersji z co najwyżej p(n) innymi elementami bloków Z1, .., Zm+1

• dzielimy tablicę na trzy części: A, B, C, |B| = |C| = 2d√ ne

• posortuj ostatnie 4 · d√

ne elementów (bloki B, C) używając InsertionSort (w rezultacie w bloku C znajdują się największe elementy w tablicy)

• scal bloki A i B używając C jako bufora

• posortuj blok C używając InsertionSort

Ćwiczenie: dlaczego używając selection-sort trzeba uwzględniać początki i końce bloków? Rozwiązanie: np. dla ciągów (111,123),(111,145) (rozmiar bloku 3), sortując jedynie po początkach moglibyśmy otrzymać: (123,145,111,111), który przy scalaniu metodą opisaną w algorytmie nie da uporządkowanego ciągu.

3 Budowa kopca w algorytmie HeapSort

Kopiec możemy budować idąc od dołu do góry. Zauważmy, że ostatnie n/2 ele- mentów spełnia warunki kopca, pozostaje jedynie poprawić porządek w pierw- szych n/2 elementach.

for i = bn/2c downto 1 do DownHeap(i)

end for

Koszt budowy kopca możemy opisać wzorem:

n 4 · 2 +n

8 · 4 + n

16· 6 + . . . = n ·X

i=1

i 2i =

n · (X

i=1

1 2i +X

i=2

1 2i +X

i=3

1

2i + . . .) = n · (1 +1 2 +1

4+ . . .) = 2n

4 Analiza algorytmu QuickSort

(AiSD, strony 56-58)

Dla losowej permutacji, oczekiwany czas sortowania przy użyciu algorytmu Qu- ickSort wynosi:

T (n) =

(1 dla n ≤ 1

(n + 1) +n1Pn

i=1(T (i − 1) + T (n − i)) dla n > 1 Dla n > 1 możemy równanie przekształcić do:

2

(3)

T (n) = (n + 1) +2 n

n

X

i=1

T (i − 1)

(mnożymy obie strony przez n)

nT (n) = n(n + 1) + 2

n

X

i=1

T (i − 1) dla n − 1 otrzymujemy:

(n − 1)T (n − 1) = (n − 1)n + 2

n−1

X

i=1

T (i − 1) po odjęciu stronami otrzymujemy:

T (n) = n + 1

n T (n − 1) + 2 co możemy przekształcić do:

T (n)

n + 1 =T (n − 1)

n + 2

n + 1 po przesumowaniu obu stron dla n0= 1..n

T (n)

n − 1= T (0)

1 +

n

X

i=1

2 i + 1 Stosując przekształcenia możemy otrzymać:

T (n) = 2(n + 1)(Hn+ 1 n + 1−3

2)

3

Cytaty

Powiązane dokumenty

Posortuj

Skorzystają z niego również ci rodzice, których dziecko urodziło się przed 1 stycznia 2016 r., a którzy nie mają pra- wa do zasiłku macierzyńskie- go w sytuacji, gdy

Передовсім та справа не належить до обсягу ради державної, а по друге, наколиб порушено єї угіравильненє в законодатній дорозі, то можна напевно сподївати

Miłośnicy twórczości Józefa Czechowicza spotkali się w so- botę w Ośrodku Brama Grodz- ka - Teatr NN na Starym Mieś- cie. Jak co roku, w rocznicę urodzin poety, odbyło się

Pojęcie przestrzeni kwadratowej zostało powtórnie zbadane przez Jensena [15]. Jensen udowodnił, że £ jest przestrzenią kwadratową wtedy i tylko wtedy, gdy jest

w sprawie uchwalenia Statutu Uniwersytetu Wrocławskiego podjęła uchwałę w sprawie wystosowania Listu otwartego do Prezydenta i Premiera RP, w którym poparła

Jako wartości opałowe uwzględnione w obliczeniu przyjęto wartości średnie za- mieszczone w tabeli 1.. Z powyższych obliczeń wynika, że dla wytworzenia 1 kWh

i Belgji. Bywały chwile, w których się mogło zdawać, że ta rachuba nie zawiedzie, szczególnie ze strony Anglji, gdyż Rząd Brytyjski wyraźnie o- świadczał