Sunteți pe pagina 1din 8

1

METODE SI TEHNICI DE SORTARE A UNUI SIR


(SORTARE IN ORDINE CRESCATOARE)

1. METODA DE SORTARE PRIN INTERSCHIMBARE


 Aceasta metoda consta in parcurgerea sirului
utilizand doi contori (i si j) .
 Fiecare element a[i] se va compara cu toate
elementele din dreapta sa, elemente de forma a[j],
cu j=i+1,n
 Daca a[i]>a[j] atunci cele doua component e se vor
interschimba
 Obs: aceasta metoda nu este eficienta deoarece
daca sirul ar fi de la inceput sortat sirul tot se
parcurge realizand n(n-1)/2 comparatii
ALGORITMUL:
Citeste n
Citeste sirul a cu n elemente
Pentru i=1,n-1 executa
Pentru j=i+1,n executa
Daca a[i]>a[j] atunci
{
aux=a[i]
a[i]=a[j]
a[j]=aux
}
Afisare sir a
2

2. SORTAREA PRIN METODA BULELOR


 Metoda consta in parcurgerea sirului ori de cate ori
este nevoie pana cand sirul devine sortat sau cat
timp sirul nu este sortat
 Inainte de parcurgerea sirului se presupune de
fiecare daca ca sirul ar fi sortat utilizand o variabila
logica
 La fiecare iteratie sirul se va parcurge pana la ultima
componenta care nu este sortata .
 Parcurgerea sirului consta in compararea de fiecare
data a doua componente de pe pozitii consecutive,
de forma a[i] si a[i+1]
 Daca a[i]>a[i+1] cele doua componente se vor
interschimba
 Daca la o parcurgere a sirului exista cel putin o
interschimbare inseamna ca sirul inca nu este sigur
sortat si se reia parcurgerea sirului
 Daca la o parcurgere a sirului nu exista nicio
interschimbare atunci cu siguranta sirul este sortat
 Obs : metoda are rolul de a transporta , la fiecare
parcurgere a sirului, valoare maxima dintre
componente nesortate si de a o plasa pe pozitia
finala in sirul sortat .
3

ALGORITMUL
V1
Citeste n
Citeste sirul a cu n elemente
ok=1
k=1
Cat timp (ok=1)
{
ok=0 // se presupune ca sirul este sortat
Pentru i=1,n-k executa
Daca a[i]>a[i+1] atunci
{
aux=a[i]
a[i]=a[i+1]
a[i+1]=aux
ok=1
}
k=k+1
}
Se afiseaza sirul a
4

V2

Citeste n
Citeste sirul a cu n elemente
k=1
repeta
{
ok=0 // se presupune ca sirul este sortat
Pentru i=1,n-k executa
Daca a[i]>a[i+1] atunci
{
aux=a[i]
a[i]=a[i+1]
a[i+1]=aux
ok=1
}
k=k+1
} cat timp ok=1;
Se afiseaza sirul a
5

3. METODA DE SORTARE PRIN NUMARARE


 Este o metoda ineficienta ca spatiu de memorie
deoarece utilizeaza 3 siruri astfel : sirul a cel care
trebuie sortat, sirul b cel in care se vor plasa
elementele sortate si respectiv sirul nr avand
semnificatia ca nr[i]= numarul elementelor sirului a
care sunt mai mici decat a[i]
 Pentru formarea sirului nr se parcurge sirul cu doua
foruri avand variabilele contor i si respectiv j
 Fiecare element a[i] se compara cu toate
elementele din dreapta sa, elemente de forma a[j]
cu j=i+1,n
 Daca a[i]>a[j] creste nr[i] cu o unitate , in caz
contrar creste nr[j] cu o unitate
 Dupa formarea sirului nr , orice componenta nr[i],
la care se aduna o unitate reprezinta pozitia
elementului a[i] in sirul sortat
 Sirul sortat b se formeaza dupa urmatoarea regula :
b[nr[i]+1]=a[i], unde i=1,n
ALGORITMUL
Citeste n
Citeste sirul a cu n elemente
Pentru i=1,n executa
Pentru j=i+1, n executa
Daca a[i]>a[j] atunci nr[i]=nr[i]+1
Altfel nr[j]=nr[j]+1
Pentru i=1,n executa
6

b[nr[i]+1]=a[i]
Afiseaza sirul b

4. METODA DE SORTARE PRIN SELECTIE DIRECTA


 Metoda consta in parcurgerea sirului de la prima
componenta pana la componenta n-1 inclusiv
 La pasul i componentele a[1],a[2],...,a[i-1] sunt
deja sortate .
 La pasul i se determina valoarea minima respectiv
pozitia elementului minim dintrea componentele
a[i],a[i+1],...,a[n] .
 Fie p pozitia elementului minim . Daca p este diferit
de i atunci componentele a[i] si a[p] se vor
interschimba
ALGORITMUL

Citeste n
Citeste sirul a cu n componente
Pentru i=1,n-1 executa
{
min=a[i]
p=i
Pentru j=i+1,n executa
Daca a[j]<min atunci
7

{
min=a[j]
p=j
}
Daca p!=i atunci
{
aux=a[i]
a[i]=a[p]
a[p]=aux
}
}
Afiseaza sirul a

5. METODA DE SORTARE PRIN INSERTIE DIRECTA


 Aceasta metoda consta in parcurgerea sirului
incepand cu a doua componenta pana la final
 La pasul i elementele a[1],a[2],..,a[i-1] sunt deja
sortate si trebuie sa plasam elementul a[i] printre
elementele deja sortate
 Pentru a plasa elementul a[i] vom parcurge
urmatorii pasi :
i) Se retine a[i] intr-o variabila temporara t
ii) Indicele j parcurge in ordine inversa
elementele deja sortate
iii) Cat timp a[j]>t si j>0 elementul a[j] se
deplaseaza la dreapta cu o unitate, iar j
descreste cu o unitate
8

iv) In final t se va pozitiona pe urmatoare


componenta pentru care nu a mai fost
adevarata conditia : a[j+1]=t
ALGORITMUL

Citeste n
Citeste sirul a cu n elemente
Pentru i=2,n executa
{
t=a[i]
j=i-1
Cat timp a[j]>t si j>0 executa
{
a[j+1]=a[j]
j=j-1
}
a[j+1]=t
}
Afiseaza sirul a

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