Documente Academic
Documente Profesional
Documente Cultură
Clasificare
i=4 (0,3,5,7,8) 7 4
Codul in C++ al algoritmului de sortare
prin selectie
Int main()
{
int n,a[100],i,j,k,max,min;
cin>>n;
for(i=0;i<n;i++) se citesc datele de intrare
{
cout<<“a[“<<i<<“]=“; cin>>a[i];
}
for(i=0;i<n;i++)
{
min=a[i];
k=i;
for(j=i+1;j<n;j++)
if(a[j]<min)
{ se sorteaza vectorul
min=a[j];
k=j;
}
max=a[j];
a[k]=a[i];
a[i]=max;
}
for(i=0;i<n;i++)
cout<<a[i]<<“ “; se afiseaza rezultatele
}
Sortarea prin insertie (InsertSort)
Am avut interschimbare si de data aceasta,deci iesim cu ok=fals.La acest pas 1.1 a ajuns
pe locul sau definitiv.
III. A treia parcurgere a tabloului incepe cu reinitializarea lui ok cu valoarea adevarat.
a1=0.0 a2=0.08 a3=1.0 a4=1.1 a5=1.2 ok
In practica algoritmul de sortare cel mai rapid este QuickSort numita sortare rapida,care
foloseste partitionarea ca idee de baza.
Metoda QuickSort presupune gasirea pozitiei finale pe care o ocupa elementul de pe prima
pozitie comparandu-l cu elementele din cealalta partitie a tabelului,acest,acest algoritm
realizandu-se pana cand partitia are 1 element.
Exemplu:
Vectorul A cu elementele 1,12,5,26,7,14,3,7,2
1 12 5 26 7 14 3 7 2
1 12 5 26 7 14 3 7 2
1 12 5 26 7 14 3 7 2
1 2 5 26 7 14 3 7 12
1 2 5 7 7 14 3 26 12
1 2 5 7 3 14 7 26 12
1 2 5 7 3 14 7 26 12
1 2 3 5 7 7 12 14 26
Codul in C++ al algoritmului de sortare
rapida (QuickSort)
int v[100],n,k;
int poz(int li,int ls,int &k,int v[100])
{ int i=li,j=ls,c,i1=0,j1=-1;
while(i<j)
{ if(v[i]>v[j])
{ c=v[j]; v[j]=v[i]; v[i]=c;
c=i1; i1=-j1; j1=c;
}
i=i+i1; j=j+j1;
}
k=i;
}
int quick(int li,int ls)
{ if(li<ls)
{ poz(li,ls,k,v);
quick(li,k-1);
quick(k+1,ls);
}
}
int main()
{ int i;
cin>>i;
for(i=1;i<=n;i++)
cin>>v[i];
quick(1,n);
for(i=1;i<=n;i++)
cout<<v[i]<<“ “;
}
Sortarea prin interclasare (MergeSort)
Sir ordonat
12234566
2456 1236
25 46 13 26
5 2 4 6 1 3 2 6
Codul in C++ al algoritmului de sortare
prin interclasare (MergeSort)
int v[1000],n; else {k++;
int citire() a[k]=v[j];
{int i; j++;
cin>>n; }
for(i=1;i<=n;i++) if(i<=m)
cin>>v[i]; for(j=i;j<=m;j++)
} {k++;
int afis() a[k]=v[j];
{int i; }
for(i=1;i<=n;i++) else for(i=j;i<=u;i++)
cout<<v[i]<<" "; {k++;
cin>>i; a[k]=v[i];
} }
int ordo(int p,int u) for(i=1;i<=k;i++)
{int aux; v[p+i-1]=a[i];
if(v[p]>v[u]) }
{aux=v[p]; int divide(int p,int u)
v[p]=v[u]; {int m;
v[u]=aux; if(u-p<=1)
} ordo(p,u);
} else {m=(p+u)/2;
int interclas(int p,int u,int m) divide(p,m);
{int i,j,a[1000],k=0; divide(m+1,u);
i=p; interclas(p,u,m);
j=m+1; }
while(i<=m && j<=u) }
if(v[i]<v[j]) int main ()
{k++; {citire();
a[k]=v[i]; divide(1,n);
i++; afis();
} }
Sortarea cu micsorarea incrementului
(ShellSort)
Sortarea cu micsorarea incrementului (shellsort) este o extensie simplã
al Insertion sortului care câstigã vitezã permitând schimbarea
elementelor aflate departe. Shellsort necesitã mai multi pasi fatã de
Insertion sort, dar la fiecare pas elementele efectuazã salturi lungi spre
pozitia corectã.
Exemplu-1.
Exemplu-2.
Prezentare realizata de
-Ebîncă Cristian-Gabriel