Prezentarea se încărcă. Vă rugăm să așteptați

Prezentarea se încărcă. Vă rugăm să așteptați

SORTAREA PRIN METODA BULELOR

Prezentări similare


Prezentarea pe tema: "SORTAREA PRIN METODA BULELOR"— Transcriere de prezentare:

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

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

3 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ă nicio interschimbare între elemente (adică tabloul este sortat).

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

5 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ă logică (se utilizează pentru a şti dacă s-a făcut cel puţin o operaţie de interschimbare la parcurgerea tabloului).

6 ALGORITMUL ÎN LIMBAJ NATURAL
Se iniţializează variabila f cu 1 (adică se presupune că şirul este sortat); Se începe parcurgerea tabloului plecând de la i=0 (primul element al tabloului); Se compară elementul a[i] cu elementul următor a[i+1]: Dacă a[i] > a[i+1] atunci se realizează interschimbul celor două elemente şi variabila f primeşte valoarea 0; Se trece la următoarea poziţie în tablou prin incrementarea lui i; Se continua parcurgerea tabloului făcând comparaţiile necesare până când i ajunge la valoarea n-2; Se reia algoritmul începând cu pasul 1 cât timp f=0, Când f rămâne 1 atunci înseamnă că tabloul este sortat crescător (la ultima parcurgere nu s-a realizat nici un interchimb de elemente).

7 Fie tabloul unidimensional a ce are următorul conţinut:
Poziţia i = 1 2 3 4 3 2 1 n=4

8 > DA 4 3 2 1 f=1 Prima parcurgere a tabloului i=0
SE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

9 f=0 Prima parcurgere a tabloului 3 4 2 1

10 > DA 3 4 2 1 f=0 Prima parcurgere a tabloului i=1
SE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

11 f=0 Prima parcurgere a tabloului 3 2 4 1

12 > DA 3 2 4 1 f=0 Prima parcurgere a tabloului i=2
SE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

13 f=0 Prima parcurgere a tabloului 3 2 1 4

14 f=0 ? DA 3 2 1 4 f=0 Prima parcurgere a tabloului
SE REIA PARCURGEREA TABLOULUI

15 > DA 3 2 1 4 f=1 A doua parcurgere a tabloului i=0
SE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

16 f=0 A doua parcurgere a tabloului 2 3 1 4

17 > DA 2 3 1 4 f=0 A doua parcurgere a tabloului i=1
SE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

18 f=0 A doua parcurgere a tabloului 2 1 3 4

19 f=0 i=2 A doua parcurgere a tabloului 2 1 3 4 > NU

20 f=0 ? DA 2 1 3 4 f=0 A doua parcurgere a tabloului
SE REIA PARCURGEREA TABLOULUI

21 > DA 2 1 3 4 f=1 A treia parcurgere a tabloului i=0
SE REALIZEAZĂ INTERSCHIMBUL ELEMENTELOR

22 f=0 A treia parcurgere a tabloului 1 2 3 4

23 f=0 i=1 A treia parcurgere a tabloului 1 2 3 4 > NU

24 f=0 i=2 A treia parcurgere a tabloului 1 2 3 4 > NU

25 f=0 ? DA 1 2 3 4 f=0 A treia parcurgere a tabloului
SE REIA PARCURGEREA TABLOULUI

26 f=1 i=0 A patra parcurgere a tabloului 1 2 3 4 > NU

27 f=1 i=1 A patra parcurgere a tabloului 1 2 3 4 > NU

28 f=1 i=2 A patra parcurgere a tabloului 1 2 3 4 > NU

29 f=0 ? NU 1 2 3 4 f=1 A patra parcurgere a tabloului
TABLOUL ESTE SORTAT

30 Tabloul sortat crescător
Tabloul iniţial: 4 3 2 1 Tabloul sortat crescător 1 2 3 4

31 ALGORITMUL ÎN LIMBAJ C++
#include<iostream.h> int a[20],aux,f; unsigned int n,i; void main (void) { cout<<"n="; cin>>n; for (i=0;i<n;i++) cout<<"a["<<i+1<<"]="; cin>>a[i]; } do { f=1; for(i=0;i<n-1;i++) if (a[i]>a[i+1]) aux=a[i]; a[i]=a[i+1]; a[i+1]=aux; f=0; } while(!f); cout<<"sirul sortat este"<<endl; for (i=0;i<n;i++) cout<<a[i]<<" ";

32 APLICAŢII 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.

33 APLICAŢII 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.

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

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


Descărcați ppt "SORTAREA PRIN METODA BULELOR"

Prezentări similare


Publicitate de la Google