SORTAREA PRIN METODA BULELOR

Preview:

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

Citation preview

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.

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)

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).

ENUNŢUL PROBLEMEI:ENUNŢUL PROBLEMEI:

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

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).).

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).

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

4 123

f=1

i=0

SE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

Prima parcurgere a tabloului

>

DA

4 123

f=0 Prima parcurgere a tabloului

4 123

f=0

i=1

Prima parcurgere a tabloului

>

DASE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

4 123

Prima parcurgere a tablouluif=0

4 123

f=0

i=2

Prima parcurgere a tabloului

>

DASE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

4123

Prima parcurgere a tablouluif=0

4123

f=0 Prima parcurgere a tabloului

f=0

DA

?

SE REIA PARCURGEREA TABLOULUI

4123

A doua parcurgere a tablouluif=1

i=0

>

DASE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

412 3

A doua parcurgere a tablouluif=0

412 3

A doua parcurgere a tablouluif=0

i=1

>

DASE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

412 3

A doua parcurgere a tablouluif=0

412 3

A doua parcurgere a tablouluif=0

i=2

>

NU

412 3

A doua parcurgere a tablouluif=0

f=0 ?

DA

SE REIA PARCURGEREA TABLOULUI

412 3

A treia parcurgere a tablouluif=1

i=0

>

DASE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

41 2 3

A treia parcurgere a tablouluif=0

41 2 3

A treia parcurgere a tablouluif=0

i=1

>

NU

41 2 3

A treia parcurgere a tablouluif=0

i=2

>

NU

41 2 3

A treia parcurgere a tablouluif=0

f=0 ?

DA

SE REIA PARCURGEREA TABLOULUI

41 2 3

A patra parcurgere a tablouluif=1

i=0

>

NU

41 2 3

A patra parcurgere a tablouluif=1

i=1

>

NU

41 2 3

A patra parcurgere a tablouluif=1

i=2

>

NU

41 2 3

A patra parcurgere a tablouluif=1

f=0 ?

NU

TABLOUL ESTE SORTAT

41 2 3

Tabloul sortat crescător

4 123

Tabloul iniţial:

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]<<" ";}}

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.

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.

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.

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.

Recommended