• Nie Znaleziono Wyników

podział,sortowanieszybkie algorytmyistrukturydanych

N/A
N/A
Protected

Academic year: 2021

Share "podział,sortowanieszybkie algorytmyistrukturydanych"

Copied!
1
0
0

Pełen tekst

(1)

ćwiczenia (licencjat dzienny): lista zadań nr 4 31 października 2007 r.

algorytmy i struktury danych

podział, sortowanie szybkie

Instytut Informatyki Uniwersytetu Wrocławskiego Paweł Rzechonek

1. [∗∗] W n–elementowej tablicy A[0 . . . n − 1] zapisany jest nieuporządkowany ciąg (a0, a1, . . . , an−1).

Zaprojektuj rekurencyjny algorytm, który stabilnie rozdzieli dane w tej tablicy względem określonej wartości piwota x i nie będzie używał dodatkowych buforów pomodniczych na dane. Czas działania twojego algorytmu powinien być nie gorszy niż O(n log n).

2. [∗∗∗] Rozważmy następujący pomysł na trójpodział: z tablicy rozmiaru n losowo wybieramy dwa różne elementy x i y (bez straty ogólności można założyć, że x ≤ y); następnie przesuwamy pozostałe elementy w taki sposób, aby najpierw występowały < x (pierwszy blok), potem te które są ≥ x i ≤ y (drugi blok), a na końcu > y (trzeci blok). Napisz w pseudokodzie imlementację takiego algorytmu (powinna to być funkcja, która po przestawieniu wszystkich elemntów, zwróci parę liczb — pozycje, od których rozpoczyna się drugi i trzeci blok). Wylicz jaka jest oczekiwana długość środkowego bloku przy założeniu, że wszystkie elementy w tablicy są różne. Jakie jest prawdopodobieństwo, że po takim trójpodziale żaden z trzech bloków jest nie większy niż n2, jeśli każda para elementów dzielących mogła być wylosowana z jednakowym prawdopodobieństwem?

3. [∗∗] Jak zmodyfikować algorytm quick–sort, aby w każdym przypadku głębokość wywołań rekurencyj- nych była nie większa niż log n dla danych rozmiaru n?

Wskazówka. Jedno z wywołań rekurencyjnych rozwiń w miejscu.

4. [∗∗∗] Pokaż, jak zaimplementować algorytm quick–sort, aby działał on w miejscu (nie wolno korzystać z rekurencji).

5. [∗∗] Załóżmy, że podziały na każdym poziomie rekurencji w algorytmie quick–sort są dokonywane w stosunku α : 1 − α, gdzie 0 < α ≤ 12 jest pewną stałą. Pokaż, że największa głębokość liścia w drzewie rekursji wynosi około − log(1−α)log n .

Uwaga. Nie przejmuj się zaokrąglaniem do liczb całkowitych.

6. [∗∗] Pokaż, że dla każdego stałego 0 < α ≤ 12 prawdopodobieństwo tego, że procedura partition dla dowolnej tablicy z różnymi danymi wejściowymi utworzy podział bardziej zrównoważony niż α : 1 − α, wynosi około 1 − 2α. Dla jakiej wartości α prawdopodobieństwo otrzymania zrównoważonego podziału wynosi 12?

1

Cytaty

Powiązane dokumenty

Dla dodatniej liczby naturalnej n znaleźć wzór na największą potęgę liczby pierwszej p dzielącą n!4. Rozłożyć na czynniki pierwsze

Czy nie przeczy to tezie, że pierwszy wyraz ciągu nie może mieć wpływu na

Oblicz prawdopodobieństwo wylosowania króla z talii 24 kart, jeśli wiemy, że wylosowana karta jest pikiem..

Jakie jest prawdopodobieństwo, że w pewnym kolorze będziemy mieli dokładnie 4 karty, jeśli wiadomo, że mamy dokładnie 5 pików?.

Na podstawie obserwacji obliczono prawdopodobieństwo p=0,1 że któryś komputerów w czasie zajęć jest wolny (równe dla wszystkich pięciu

Jaka jest szansa, że wśród 10 losowo wybranych pączków znajdzie się przynajmniej 8 pączkow

Jest mi niezmiernie przykro, że moja ocena książki Galarowicza różni się od werdyktu profesorów, których bardzo szanuję, ale nic na to nie poradzę.. Dla porządku

Obliczyć prawdopodobieństwo tego, że losowo wybrana osoba jest chora, jeśli test tej osoby dał wynik pozytywny.. Wybieramy jedną z tych urn, przy czym prawdopodobieństwo