sortarea prin metoda bulelor

35
SORTAREA PRIN METODA SORTAREA PRIN METODA BULELOR BULELOR OBIECTIVE: OBIECTIVE: să cunoască semnificaţia noţiunii d să cunoască semnificaţia noţiunii d e sortare; e sortare; să descrie algoritmul în limbaj nat să descrie algoritmul în limbaj nat ural; ural; să cunoască ce variabile sunt neces să cunoască ce variabile sunt neces are; are; să implementeze algoritmul în limba să implementeze algoritmul în limba j C++; j C++;

Upload: aquila-townsend

Post on 01-Jan-2016

121 views

Category:

Documents


7 download

DESCRIPTION

SORTAREA PRIN METODA BULELOR. OBIECTIVE: să cunoască semnificaţia noţiunii de sortare; să descrie algoritmul în limbaj natural; să cunoască ce variabile sunt necesare; să implementeze algoritmul în limbaj C++; să rezolve probleme ce necesită sortări. SEMNIFICAŢIA NOŢIUNII DE SORTARE. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SORTAREA PRIN METODA BULELOR

SORTAREA PRIN METODA SORTAREA PRIN METODA BULELORBULELOR

OBIECTIVE:OBIECTIVE:să cunoască semnificaţia noţiunii de sortasă cunoască semnificaţia noţiunii de sorta

re;re;să descrie algoritmul în limbaj natural;să descrie algoritmul în limbaj natural;să cunoască ce variabile sunt necesare;să cunoască ce variabile sunt necesare;să implementeze algoritmul în limbaj C++să implementeze algoritmul în limbaj C++

;;să rezolve probleme ce necesită sortări.să rezolve probleme ce necesită sortări.

Page 2: SORTAREA PRIN METODA BULELOR

SEMNIFICAŢIA NOŢIUNII DE SEMNIFICAŢIA NOŢIUNII DE SORTARESORTARE

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

Page 3: SORTAREA PRIN METODA BULELOR

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

Page 4: SORTAREA PRIN METODA BULELOR

ENUNŢUL PROBLEMEI:ENUNŢUL PROBLEMEI:

Se dă un tablou a cu nn elemente întregi. Să se realizeze sortarea crescătoare a elementelor tabloului.

Page 5: SORTAREA PRIN METODA BULELOR

VARIABILE NECESAREVARIABILE NECESARE

a – tabloul unidimensional;a – tabloul unidimensional;n – lungimea tabloului;n – lungimea tabloului;aux – pentru interschimbul elementelor aux – pentru interschimbul elementelor

(de acelaşi tip cu elementele tabloului);(de acelaşi tip cu elementele tabloului); i – contor (utilizat pentru parcurgerea i – contor (utilizat pentru parcurgerea

tabloului);tabloului);f – variabilă logică (se utilizează pentru a f – variabilă logică (se utilizează pentru a

şti dacă s-a făcut cel puţin o operaţie de şti dacă s-a făcut cel puţin o operaţie de interschimbare la parcurgerea interschimbare la parcurgerea tablouluitabloului).).

Page 6: SORTAREA PRIN METODA BULELOR

ALGORITMUL ÎN LIMBAJ NATURALALGORITMUL ÎN LIMBAJ NATURAL

1.1. Se iniţializează variabila f cu 1 (adică se presupune că Se iniţializează variabila f cu 1 (adică se presupune că şirul este sortat);şirul este sortat);

2.2. Se începe parcurgerea tabloului plecând de la i=0 (primul Se începe parcurgerea tabloului plecând de la i=0 (primul element al tabloului);element al tabloului);

3.3. Se compară elementul a[i] cu elementul următor a[i+1]:Se compară elementul a[i] cu elementul următor a[i+1]: Dacă a[i] Dacă a[i] > > a[i+1] atunci se realizează interschimbul celor a[i+1] atunci se realizează interschimbul celor

două elemente şi variabila f primeşte valoarea 0;două elemente şi variabila f primeşte valoarea 0;4.4. Se trece la următoarea poziţie în tablou prin Se trece la următoarea poziţie în tablou prin

incrementarea lui i;incrementarea lui i;5.5. Se continua parcurgerea tabloului făcând comparaţiile Se continua parcurgerea tabloului făcând comparaţiile

necesare până când i ajunge la valoarea n-2;necesare până când i ajunge la valoarea n-2;6.6. Se reia algoritmul Se reia algoritmul începând cu pasul 1 cât timp f=0,începând cu pasul 1 cât timp f=0,7.7. Când f rămâne 1 atunci înseamnă că tabloul este sortat Când f rămâne 1 atunci înseamnă că tabloul este sortat

crescător (la ultima parcurgere nu s-a realizat nici un crescător (la ultima parcurgere nu s-a realizat nici un interchimb de elemente).interchimb de elemente).

Page 7: SORTAREA PRIN METODA BULELOR

Fie tabloul unidimensional a ce Fie tabloul unidimensional a ce are următorul conţinut:are următorul conţinut:

4 123

10 32Poziţia i =

n=4

Page 8: SORTAREA PRIN METODA BULELOR

4 123

f=1

i=0

SE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

Prima parcurgere a tabloului

>

DA

Page 9: SORTAREA PRIN METODA BULELOR

4 123

f=0 Prima parcurgere a tabloului

Page 10: SORTAREA PRIN METODA BULELOR

4 123

f=0

i=1

Prima parcurgere a tabloului

>

DASE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

Page 11: SORTAREA PRIN METODA BULELOR

4 123

Prima parcurgere a tablouluif=0

Page 12: SORTAREA PRIN METODA BULELOR

4 123

f=0

i=2

Prima parcurgere a tabloului

>

DASE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

Page 13: SORTAREA PRIN METODA BULELOR

4123

Prima parcurgere a tablouluif=0

Page 14: SORTAREA PRIN METODA BULELOR

4123

f=0 Prima parcurgere a tabloului

f=0

DA

?

SE REIA PARCURGEREA TABLOULUI

Page 15: SORTAREA PRIN METODA BULELOR

4123

A doua parcurgere a tablouluif=1

i=0

>

DASE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

Page 16: SORTAREA PRIN METODA BULELOR

412 3

A doua parcurgere a tablouluif=0

Page 17: SORTAREA PRIN METODA BULELOR

412 3

A doua parcurgere a tablouluif=0

i=1

>

DASE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

Page 18: SORTAREA PRIN METODA BULELOR

412 3

A doua parcurgere a tablouluif=0

Page 19: SORTAREA PRIN METODA BULELOR

412 3

A doua parcurgere a tablouluif=0

i=2

>

NU

Page 20: SORTAREA PRIN METODA BULELOR

412 3

A doua parcurgere a tablouluif=0

f=0 ?

DA

SE REIA PARCURGEREA TABLOULUI

Page 21: SORTAREA PRIN METODA BULELOR

412 3

A treia parcurgere a tablouluif=1

i=0

>

DASE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

Page 22: SORTAREA PRIN METODA BULELOR

41 2 3

A treia parcurgere a tablouluif=0

Page 23: SORTAREA PRIN METODA BULELOR

41 2 3

A treia parcurgere a tablouluif=0

i=1

>

NU

Page 24: SORTAREA PRIN METODA BULELOR

41 2 3

A treia parcurgere a tablouluif=0

i=2

>

NU

Page 25: SORTAREA PRIN METODA BULELOR

41 2 3

A treia parcurgere a tablouluif=0

f=0 ?

DA

SE REIA PARCURGEREA TABLOULUI

Page 26: SORTAREA PRIN METODA BULELOR

41 2 3

A patra parcurgere a tablouluif=1

i=0

>

NU

Page 27: SORTAREA PRIN METODA BULELOR

41 2 3

A patra parcurgere a tablouluif=1

i=1

>

NU

Page 28: SORTAREA PRIN METODA BULELOR

41 2 3

A patra parcurgere a tablouluif=1

i=2

>

NU

Page 29: SORTAREA PRIN METODA BULELOR

41 2 3

A patra parcurgere a tablouluif=1

f=0 ?

NU

TABLOUL ESTE SORTAT

Page 30: SORTAREA PRIN METODA BULELOR

41 2 3

Tabloul sortat crescător

4 123

Tabloul iniţial:

Page 31: SORTAREA PRIN METODA BULELOR

ALGORITMUL ÎN LIMBAJ C++ALGORITMUL ÎN LIMBAJ C++#include<iostream.h>#include<iostream.h>int a[20],aux,f;int a[20],aux,f;unsigned int n,i;unsigned int n,i;void main (void)void main (void)

{{cout<<"n=";cout<<"n=";cin>>n;cin>>n;for (i=0;i<n;i++)for (i=0;i<n;i++)

{{

cout<<"a["<<i+1<<"]=";cout<<"a["<<i+1<<"]=";cin>>a[i];cin>>a[i];}}

dodo{{f=1;f=1;for(i=0;i<n-1;i++)for(i=0;i<n-1;i++)

if (a[i]>a[i+1])if (a[i]>a[i+1]){{

aux=a[i];aux=a[i];

a[i]=a[i+1];a[i]=a[i+1];

a[i+1]=aux;a[i+1]=aux;f=0;f=0;}}

}}while(!f);while(!f);cout<<"sirul sortat cout<<"sirul sortat este"<<endl;este"<<endl;for (i=0;i<n;i++)for (i=0;i<n;i++)

cout<<a[i]<<" ";cout<<a[i]<<" ";}}

Page 32: SORTAREA PRIN METODA BULELOR

APLICAŢIIAPLICAŢII

1.1. Dându-se un tablou cu n elemente Dându-se un tablou cu n elemente numere naturale, şi o variabilă p numere naturale, şi o variabilă p naturală (pnaturală (p<<n), să se sorteze n), să se sorteze crescător tabloul până la elementul crescător tabloul până la elementul p şi de la elementul p descrescător.p şi de la elementul p descrescător.

Page 33: SORTAREA PRIN METODA BULELOR

APLICAŢIIAPLICAŢII

2.2. Dându-se un tablou cu n elemente Dându-se un tablou cu n elemente numere naturale, să se localizeze numere naturale, să se localizeze elementul maxim şi toate elementul maxim şi toate elementele dinaintea lui să se elementele dinaintea lui să se sorteze crescător, iar cele de după sorteze crescător, iar cele de după el,descrescător.el,descrescător.

Page 34: SORTAREA PRIN METODA BULELOR

APLICAŢIIAPLICAŢII

3.3. Se introduce anul naşterii pentru un Se introduce anul naşterii pentru un număr de n persoane, n introdus şi număr de n persoane, n introdus şi el de la tastatură. Să se afişeze el de la tastatură. Să se afişeze vârstele persoanelor în ordine vârstele persoanelor în ordine crescătoare.crescătoare.

Page 35: SORTAREA PRIN METODA BULELOR

TEMĂTEMĂ

Pentru un experiment privind inteligenţa unor Pentru un experiment privind inteligenţa unor maimuţe se aşează pe masă un număr de maimuţe se aşează pe masă un număr de maxim 20 de cuburi. Maimuţele sunt învăţate maxim 20 de cuburi. Maimuţele sunt învăţate să aleagă cuburile astfel încât să formeze din să aleagă cuburile astfel încât să formeze din toate un turn stabil. Pentru fiecare maimuţă, toate un turn stabil. Pentru fiecare maimuţă, înainte de testare, este nevoie să se înainte de testare, este nevoie să se rearanjeze cuburile în ordinea iniţială. Să se rearanjeze cuburile în ordinea iniţială. Să se alcătuiască algoritmul după care o maimuţă alcătuiască algoritmul după care o maimuţă ar trebui să formeze turnul, astfel încât să se ar trebui să formeze turnul, astfel încât să se poată reface aşezarea iniţială a cuburilor.poată reface aşezarea iniţială a cuburilor.