background image

 

 

Sortowanie bąbelkowe

Wykład:

  bubble  sort,  implementacja  w  C++,  animacja 

pokazująca sortowanie bąbelkowe, złożoność algorytmu

background image

 

 

SORTOWANIE BĄBELKOWE

 

background image

 

 

ALGORYTM SORTOWANIA 

BĄBELKOWEGO

  Sortowanie  to  polega  na  porównywaniu  dwóch  kolejnych 

elementów  i  zamianie  ich  kolejności,  zgodnie  z  zasadą: 

”lżejszy bąbelek powietrza chce jako pierwszy wypłynąć na 

powierzchnię wody” 

(w sortowaniu rosnącym) lub 

”cięższy 

bąbelek  powietrza  chce  jako  pierwszy  wypłynąć  na 

powierzchnię  wody”

  (w  sortowaniu  malejącym).  Za 

”powierzchnię wody” przyjmuje się zerowy element tablicy.

Złożoność czasowa tego algorytmu:  O(n  ) 

Złożoność pamięciowa: O(1)

2

background image

 

 

IMPLEMENTACJA W C++

 void

 sortowanie_babelkowe(int *tab, int n)

{

   

 for

 (int i=1; i<n; i++)

    {

        

for

 (int j=n-1; j>=1; j--)

        {

           

 if

 (tab[j]<tab[j-1])

            {

                int bufor;

                bufor=tab[j-1];

                tab[j-1]=tab[j];

                tab[j]=bufor;

            }

        }

    }

}

background image

 

 

PRZYKŁAD SORTOWANIA 

BĄBELKOWEO

     Dana jest tablica, którą należy posortować rosnąco:

 0       1       2       3       4       5 

9      2       6       5      1       3 

indeks 

background image

 

 

9
2
6

5
1

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

background image

 

 

9
2
6

5
1

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Sortowanie rozpoczynamy 
od końca tablicy

Sortujemy  rosnąco,  więc 
za każdym razem 

lżejszy

 

bąbelek  będzie  ulatywał 
ku powierzchni wody 

background image

 

 

9
2
6

5
1

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Brak zamiany

background image

 

 

9
2
6

5
1

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Zamiana, bo 1<5

background image

 

 

9
2
6

1
5

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Zamiana, bo 1<5

background image

 

 

9
2
6

1
5

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Zamiana, bo 1<6

background image

 

 

9
2
1

6
5

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Zamiana, bo 1<6

background image

 

 

9
2
1

6
5

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Zamiana, bo 1<2

background image

 

 

9
1
2

6
5

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Zamiana, bo 1<2

background image

 

 

9
1
2

6
5

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Zamiana, bo 1<9

background image

 

 

1
9
2

6
5

0

1

2

3

4

5

powierzchnia wody

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Zamiana, bo 1<9

background image

 

 

...POWTARZAĆ DO MOMENTU 

POSORTOWANIA CAŁEJ TABLICY 

background image

 

 

9
2
6

5
1

0

1

2

3

4

5

I

n

d

e

k

s

 

w

 

t

a

b

l

i

c

y

Etapy sortowania

 0       1       2       3       4       5 

1
9
2

6
5

1
9
2

6
5

1
2
9

3
6

1
2
3

9
5

1
2
3

5
9

1
2
3

5
6