Sunteți pe pagina 1din 24

Sortari

- selectie
- inserare / insertie directa
- numărare
- metoda interschimbarii(bubble _sort)
Sortare prin selectie

Se da un sir de elemente v cu n numere intregi. Sa se afle vectorul


ordonat crescator cu ajutorul metodei de sortare prin selectie directa.

ex: n=5 v(29, 6, 34, 8, 23) => 6 8 23 29 34

Algoritmul consta in:


- se compara elementul v[i], i=1,n-1cu elementele de dupa el v[j], j=i+1,n
- daca nu corespund ordinii de crescator/descrescator se interschimba
valorile lor
↓i=1 ↓j=2
29 6 34 8 23
Se compara 29>6 => nu corespund ordinii de crescator => se schimba valorile lor

↓i=1 ↓j=3
6 29 34 8 23
Se compara 6<34 => corespund ordinii de crescator
↓i=1 ↓j=4
6 29 34 8 23
Se compara 6<8 => corespund ordinii de crescator

↓i=1 ↓j=5
6 29 34 8 23
Se compara 6<23 => corespund ordinii de crescator
↓i=2 ↓j=3
6 29 34 8 23
Se compara 29<34 => corespund ordinii de crescator

↓i=2 ↓j=4
6 29 34 8 23
Se compara 29>8 => nu corespund ordinii de crescator=> se schimba valorile lor

↓i=2 ↓j=5
6 8 34 29 23
Se compara 8<23 => corespund ordinii de crescator
↓i=3 ↓j=4
6 8 34 29 23
Se compara 34>29 => nu corespund ordinii de crescator => se schimba valorile lor

↓i=3 ↓j=5
6 8 29 34 23
Se compara 29>23 => nu corespund ordinii de crescator => se schimba valorile lor
↓i=4 ↓j=5
6 8 23 34 29
Se compara 34>29 => nu corespund ordinii de crescator => se schimba valorile lor

6 8 23 29 34
Sortare prin inserare/ insertie directa

Se da un sir de elemente v cu n numere intregi. Sa se afle vectorul


ordonat crescator cu ajutorul metodei de sortare prin inserare/ insertie directa.

ex: n=5 v(29, 6, 34, 8, 23) => 6 8 23 29 34

Algoritmul consta in:


- se compara elementul v[i], i=2,n cu elementele din fata lui care sunt deja
ordonate, v[j], j=1,i-1
- il insereaza pe pozitia corespunzatoare astfel incat sa ramana elementele
ordonate de la pozitia 1 la pozitia i
↓i=2
29 6 34 8 23
Cauta sa-l insereze pe 6 intre elementele din fata sa astfel incat sirul sa ramana
ordonat

↓i=2
6 29 34 8 23
Cauta sa-l insereze pe 34 intre elementele din fata sa astfel incat sirul sa ramana
ordonat

↓i=3
6 29 34 8 23
Cauta sa-l insereze pe 8 intre elementele din fata sa astfel incat sirul sa ramana
ordonat
↓i=4
6 8 29 34 23
Cauta sa-l insereze pe 8 intre elementele din fata sa astfel incat sirul sa ramana
ordonat

6 8 23 29 34

2 5 8 9 12 3 ………..
3 se insereaza pe pozitia a
2-a
aux=3
2 3 5 8 9 12
Sortare prin numarare

Se da un sir de elemente v cu n numere intregi. Sa se afle vectorul


ordonat crescator cu ajutorul metodei de sortare prin numarare.

ex: n=5 v(29, 6, 34, 8, 23) => 6 8 23 29 34

Algoritmul consta in:


- se numara pentru fiecare element v[i], i=1,n cate elemente sunt mai mici
decat el in sir
- se construieste un alt vector/sir cu numerele obtinute
- se construieste al treilea vector/sir in functie de aceste numere, care va fir
ordonat
↓i=1
29 6 34 8 23
29 are 3 elemente mai mici ca el
↓i=1
3

↓i=2
29 6 34 8 23
6 are 0 elemente mai mici ca el
↓i=2
3 0
↓i=3
29 6 34 8 23
34 are 4 elemente mai mici ca el

↓i=3
3 0 4

↓i=4
29 6 34 8 23
8 are 1 element mai mic ca el

↓i=4
3 0 4 1
↓i=5
29 6 34 8 23
23 are 2 elemente mai mici ca el
↓i=5
3 0 4 1 2
29 6 34 8 23

3 0 4 1 2

29

6 29

6 29 34

6 8 29 34

6 8 23 29 34
Sortare prin interschimbare (metoda bulelor)

Se da un sir de elemente v cu n numere intregi. Sa se afle vectorul


ordonat crescator cu ajutorul metodei de sortare prin metoda bulelor.

ex: n=5 v(29, 6, 34, 8, 23) => 6 8 23 29 34

Algoritmul consta in:


- se compara elementul v[i], i=1,n-1cu elementul v[i+1]
- daca nu corespund ordinii de crescator/descrescator se interschimba
valorile lor
b=1; ↓i=1
29 6 34 8 23
Se compara 29>6 => nu corespund ordinii de crescator => se schimba valorile lor; b=0;
↓i=2
6 29 34 8 23
Se compara 29<34 => corespund ordinii de crescator
↓i=3
6 29 34 8 23
Se compara 34>8 => nu corespund ordinii de crescator => se schimba valorile lor; b=0;
↓i=4
6 29 8 34 23
Se compara 34>23 => nu corespund ordinii de crescator => se schimba valorile lor; b=0;

6 29 8 23 34
b=1; ↓i=1
6 29 8 23 34
Se compara 6<29 => corespund ordinii de crescator
↓i=2
6 29 8 23 34
Se compara 29>8 => nu corespund ordinii de crescator => se schimba valorile lor; b=0;
↓i=3
6 8 29 23 34
Se compara 29>23 => nu corespund ordinii de crescator => se schimba valorile lor; b=0;
↓i=4
6 8 23 29 34
Se compara 29<34 => corespund ordinii de crescator

6 8 23 29 34
b=1; ↓i=1
6 8 23 29 34
Se compara 6<8 => corespund ordinii de crescator
↓i=2
6 8 23 29 34
Se compara 8<23 => corespund ordinii de crescator
↓i=3
6 8 23 29 34
Se compara 23<29 => corespund ordinii de crescator
↓i=4
6 8 23 29 34
Se compara 29<34 => corespund ordinii de crescator

6 8 23 29 34
1 7 5 3
ok=1 i=1(1>7 F)
i=2(7>5) ok=0
1 5 7 3
i=3(7>3) ok=0
1 5 3 7
ok=1 i=1(1>5 F)
i=2(5>3)ok=0
1 3 5 7
i=3(5>7 F)
Se da vectorul/sirul cu n=4 elemente v(7,8,11,2). Sa se scrie pasii numerici de
ordonare prin:
• selectie
• inserare / insertie directa
• numărare
• metoda interschimbării (bubble _sort)

selectie
7 8 11 2 numarare
i=1 j=2 (7>8 F) v (7 8 11 2)
i=1 j=3 (7>11 F) p(1 2 3 0)
i=1 j=4 (7>2 A)
W(2 7 8 11)
2 8 11 7
i=2 j=3 (8>11F)
i=2 j=4 (8>7)
2 7 11 8
i=3 j=4 (11>8 A)
2 7 8 11
insertie directa
7 8 11 2
i=2 insereaza pe 8 intre elementele din fata sa, ordonate
7 8 11 2
i=3 insereaza pe 11 intre elementele din fata sa, ordonate
8 8 11 2
i=4 insereaza pe 2 intre elementele din fata sa, ordonate
2 7 8 11

bule
7 8 11 2
b=1 i=1(7>8 F) 7 2 8 11
i=2(8>11 F) b=1 i=1(7>2A) b=0
i=3(11>2 A) b=0 2 7 8 11
7 8 2 11 i=2(7>8 F) i=3(8>11F)
b=1 i=1 (7>8 F) 2 7 8 11
i=2(8>2 A) b=0 b=1 i=1(2<7 F) i=2(7>8 F) i=3(8>11F)
7 2 8 11
i=3(8<11 F)

S-ar putea să vă placă și