Sunteți pe pagina 1din 6

Sortarea prin interschimbare

template <class T>


void selectSort(T a[], long size) { long i, j, k;
T x;
for(i=0;i<size;i++) {
// i numrul pasului curent
k=i;
x=a[i];
// selectarea celui mai mic element n ciclul
for(j=i+1;j<size;j++)
if(a[j]<x){
k=j; x=a[j];
// k indicile celui mai mic
element
}
a[k]=a[i];
a[i]=x;
// schimbm locul cu cel mai mic a[i]
}}

Acum, vom ncerca s construim o secven finit, pornind de la captul din stnga al
matricei. Algoritmul const din n etape consecutive, ncepnd de la zero i
terminndu-se cu (n-1). n etapa i-m, ncepem prin a alege cel mai mic element a
[i] ... a[n] i l schimbm cu locul cu a [i]. Urmtoarea secvena de pai n = 5 este
prezentat n figura de mai jos.

Metoda bulelor "Bubble


Sort"
void bubbleSort(T a[], long size){ long
i, j;
T x;
for(i=0;i<size;i++){
// i numrul
trecerii
for(j=size-1;j>i;j--){// ciclul intern al
trecerii
if(a[j-1]>a[j]){
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
}}}}

Sortarea shaker
template <class T>

void shakerSort(T a[], long size) { long j, k=size-1;


long lb=1, ub=size-1; //frontier prii nesortate de matrice
T x;

do{
//interschimb
for(j=ub;j>0;j--){

if(a[j-1]>a[j]){ x=a[j-1]; a[j-1]=a[j]; a[j]=x;


k=j;
} }
lb = k+1;

interschimb deplasare jos n sus


for(j=1;j<=ub;j++){
if(a[j-1]>a[j]){
x=a[j-1]; a[j-1]=a[j]; a[j]=x;
k=j;
} }
ub=k-1;

}while (lb<ub);}

Sortare prin inserie

template <class T>


void insertSort(T a[], long size) { T x;
long i, j;
// ciclul trecerii, i numrul trecerii
for(i=0;i<size;i++){
x=a[i];
// cutarea poziiei elementului n secvena sortat
for(j=i-1;j>=0&&a[j]>x;j--)
micm elemental n dreapta, pn la a[j+1]=a[j];
poziia gsit, inserie element
a[j+1] = x;
}}

Quicksort
void quickSortR(T a[], long N) {
//La intrare - tablou a[], a[N] ultimul
element.
//plasai indicatorii la locaia lor original
long i = 0, j = N;
T temp, p;
p = a[ N/2 ];
operaia de sortare
do { while ( a[i] < p ) i++; while ( a[j] > p )
j--;
if (i <= j){
temp=a[i];
a[i]=a[j];
a[j] =temp;
i++; j--;
}}while ( i<=j );
if( j > 0 ) quickSortR(a, j);
if( N > i ) quickSortR(a+i, N-i);

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