sortarea bule2

19
SORTAREA TABLOURILOR UNIDIMENSIONALE PRIN METODA BULELOR -BUBBLE SORT- Prof. Sofroni Iulia

Upload: inna97

Post on 09-Apr-2016

219 views

Category:

Documents


4 download

DESCRIPTION

sortare

TRANSCRIPT

Page 1: sortarea bule2

SORTAREA TABLOURILOR UNIDIMENSIONALE PRIN METODA

BULELOR-BUBBLE SORT-

Prof. Sofroni Iulia

Page 2: sortarea bule2

SEMNIFICAŢIA NOŢIUNII DE SORTARE

A sorta un tablou înseamnă a rearanja elementele tabloului astfel încât între acestea să existe o relaţie de ordine (crescătoare sau descrescătoare)

Page 3: sortarea bule2

DESCRIEREA METODEI

Prin această metodă se parcurge tabloul şi se compară fiecare element cu succesorul său. Dacă nu sunt în ordine, cele două elemente se interschimbă între ele. Tabloul se parcurge de mai multe ori, până când, la o parcurgere completă, nu se mai execută nici o interschimbare între elemente (adică tabloul este sortat).

Page 4: sortarea bule2

ENUNŢUL PROBLEMEI:Se dă un tablou a cu n elemente întregi. Să se realizeze sortarea crescătoare a elementelor tabloului.

Page 5: sortarea bule2

Parcurgere I

7 25108

21 43

5

5

a:

f=1; f=0;

f==0?DA SE REIA PARCURGEREA TABLOULUI

Page 6: sortarea bule2

Parcurgere II

7 25108

21 43

5

5

a:

f=1; f=0;

f==0DA SE REIA PARCURGEREA TABLOULUI

Page 7: sortarea bule2

Parcurgere III

7 2558

21 43

10

5

a:

f=1; f=0;

f==0DA SE REIA PARCURGEREA TABLOULUI

Page 8: sortarea bule2

Parcurgere IV

7 2585

21 43

10

5

a:

f=1; f=0;

f==0DA SE REIA PARCURGEREA TABLOULUI

Page 9: sortarea bule2

Parcurgere V

5 2587

21 43

10

5

a:

f=1;

f==0 ?NU TABLOUL ESTE ORDONAT CRESCĂTOR

Page 10: sortarea bule2

VARIABILE NECESAREa – tabloul unidimensional;n – lungimea tabloului;aux – pentru interschimbul

elementelor (de acelaşi tip cu elementele tabloului);

i – contor (utilizat pentru parcurgerea tabloului);

f – variabilă care indică dacă s-au realizat interschimbărif=1 (fără interschimbări)f=0 (s-au realizat interschimbări)

Page 11: sortarea bule2

ALGORITM C++Do{ f=1; for(i=1;i<n;i++) if(a[i]>a[i+1]) { aux

=a[i]; a[i]

=a[i+1];

a[i+1]=aux; f =0;}While (!f);

Variabile necesare a – tabloul

unidimensional; n – lungimea tabloului; aux – pentru

interschimbul elementelor (de acelaşi tip cu elementele tabloului);

i – contor (utilizat pentru parcurgerea tabloului);

f – variabilă care indică dacă s-au realizat interschimbări f=1 (fără

interschimbări) f=0 (s-au realizat

interschimbări)

Page 12: sortarea bule2

METODA BULELOR - OPTIMpoz=n;Do{ f=1; for(i=1;i<poz;i++) if(a[i]>a[i+1]) { aux =a[i]; a[i] =a[i+1]; a[i+1]=aux; f =i;

} poz=f;}while (f>1);

variabile poz – pentru a memora

pozitia la care s-a realizat ultimul interschimb

f – variabilă care va memora pozitia la care s-a realizat interschimbarea

Page 13: sortarea bule2

Parcurgere I de la pozitia 1->4

8 7525

21 43

10

5

a:

poz=5; f=2;

f>1?DA SE REIA PARCURGEREA TABLOULUI

f=1;f=3f=4Poz=4

Page 14: sortarea bule2

Parcurgere II

8 2575

21 43

10

5

a:

f=1; f=2;

f>1 ?DA SE REIA PARCURGEREA TABLOULUI

Parcurgere I de la pozitia 1->3

poz=2

Page 15: sortarea bule2

Parcurgere III de la pozitia 1->2

7 2558

21 43

10

5

a:

f=1; f=2; poz=2;

f>1 ?DA SE REIA PARCURGEREA TABLOULUI

Page 16: sortarea bule2

Parcurgere IV

5 2587

21 43

10

5

a:

f=1;

f>1?NU TABLOUL ESTE SORTAT

Page 17: sortarea bule2

APLICATIA 11. Dându-se un tablou cu n elemente numere

naturale, şi o variabilă p naturală (p<n), să se sorteze crescător tabloul până la elementul p şi de la elementul p descrescător.

Page 18: sortarea bule2

APLICATIA 2(PROB 16/199) Să se memoreze într-un vector n cifre. Să se

afișeze cel mai mic număr care se poate obține cu aceste cifre.

Exemplu: Daca vectorul este 4 0 0 0 2 1 atunci numarul cerut este 100024.

Page 19: sortarea bule2

TEMA1. Dându-se un tablou cu n elemente numere

naturale, să se localizeze elementul maxim şi toate elementele dinaintea lui să se sorteze crescător, iar cele de după el descrescător.

2. Problema 9/1983. Se introduc n numere de câte una sau

două cifre. Să se afişeze aceste numere în ordinea crescătoare a primei lor cifre. Exemplu: pentru n=5 şi numerele 34 2 5 62 25 se va afişa

2 25 34 5 62 sau 25 2 34 5 62.