lab3 flagi

background image

flagi

FLAGA POLSKA ( sortowanie „0-1”)


Sortowanie „0-1” polega na podzieleniu tablicy na dwa rozłączne podzbiory wypełniające

cała przestrzeń danych. Podział ten odbywa się przy jednokrotnym przejrzeniu całej tablicy.
O każdym elemencie tablicy wiemy jednoznacznie, do którego zbioru należy.

Przy założeniu, że w tablicy występują tylko 0 i 1, po posortowaniu flagą polską na

początku mają stać zera, a na końcu jedynki. Równie dobrze może to być podział zbioru na kobiety
i mężczyzn, liczby parzyste i nieparzyste, itp.

Ma ono złożoność liniową, dlatego nie opłaca się stosować do takiego typu zadań

klasycznych algorytmów sortujących (np. insertsort, quicksort).


Idea algorytmu:

 Zmienna lewy_koniec pokazuje na pierwszy element w tablicy;
 Zmienna prawy_koniec pokazuje na ostatni element w tablicy;
 Dopóki zmienna lewy_koniec jest mniejsza od zmiennej prawy_koniec wykonujemy

następujące działania:

 szukamy pierwszej jedynki z lewej strony (stojącej nie na swoim miejscu) – wskazuje na

nią zmienna lewy_koniec;

 szukamy pierwszego zera z prawej strony (stojącego nie na swoim miejscu) – wskazuje

na nią zmienna prawy_koniec;

 jeżeli zmienna lewy_koniec jest mniejsza od prawy_koniec, to dokonujemy zamiany

elementów stojących na pozycjach, na które wskazują te zmienne;


Przykład 1

Dana jest tablica A. Posortować ją flagą polską tak, aby na początku stały zera, a na końcu jedynki.

Szukamy z lewej strony pierwszej 1, a z prawej pierwszego 0:

1

2

3

4

5

6

7

8

9

0

1

1

0

1

1

0

1

0

i=1 i=2 j=9


ponieważ i<j, więc:

zamieniamy element z pozycji i=2 z elementem z pozycji j=9
zwiększamy indeks i, zmniejszamy indeks j.


Po zamianie mamy:

1

2

3

4

5

6

7

8

9

0

0

1

0

1

1

0

1

1

i=3 j=8

background image

flagi




Dalej znowu szukamy z lewej strony pierwszej 1, a z prawej pierwszego 0:

1

2

3

4

5

6

7

8

9

0

0

1

0

1

1

0

1

1

i=3 j=7 j=8


ponieważ i<j, więc:

zamieniamy element z pozycji i=3 z elementem z pozycji j=7
zwiększamy indeks i, zmniejszamy indeks j:


Po zamianie mamy:

1

2

3

4

5

6

7

8

9

0

0

0

0

1

1

1

1

1

i=4 j=6



Dalej znowu szukamy z lewej strony pierwszej 1, a z prawej pierwszego 0:

1

2

3

4

5

6

7

8

9

0

0

0

0

1

1

1

1

1

i=4 i=5

j=5 j=6


Algorytm zakończy działanie, gdyż i>=j. Tablica jest już posortowana.

FLAGA FRANCUSKA ( sortowanie „0-1-2”)


Sortowanie „0-1-2” polega na podzieleniu tablicy na trzy rozłączne podzbiory wypełniające

cała przestrzeń danych. Podział ten odbywa się przy jednokrotnym przejrzeniu całej tablicy.
O każdym elemencie tablicy wiemy jednoznacznie, do którego zbioru należy.

Przy założeniu, że w tablicy występują tylko 0, 1 i 2, po posortowaniu flagą francuską na

początku mają stać zera, następnie jedynki, a na końcu dwójki.

Ma ono złożoność liniową, dlatego nie opłaca się stosować do takiego typu zadań

klasycznych algorytmów sortujących (np. insertsort, quicksort).


Wyszukiwarka

Podobne podstrony:
lab3
lab3 kalorymetria
Instrukcja Lab3
lab3 6
lab3
sprawko z lab3 z auto by pawelekm
Lab3 zadanie 2 schemat organizacyjny
Flagi państw
Lab3 KWW KT
Podstawy Robotyki lab3 id 36832 Nieznany
Architekrura Systemów Lab3
Lab3 Cpp GPS opis
AKiSO lab3 id 53767 Nieznany
BD 1st 2 4 lab3 tresc 1 1 id 81 Nieznany
LAB3, Szkoła, penek, Przedmioty, Fizyka, Laborki
temat cw3, Informatyka, semestr 5, CPS, lab3
3-L88, Przwatne, Studia, Semestr 4, Elektroenergetyka, Lab, wachta, 3 4, lab3
lab3 struktury danych

więcej podobnych podstron