Thuật toán sắp xếp Chọn (Selection sort)

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Thuật toán sắp xếp Chọn (Selection sort)

void doicho(int &a,int &b)


{
int t;
t=a;
a=b;
b=t;
}
void sapxepchon(int a[], int n)
{
int min;
for(int i=0;i<n-1;i++)
{
min = i;
for (int j = i+1; j < n; j++)
if (a[j] < a[min])
min = j;
doicho(a[min],a[i]);
}
}
void ShellSort(int a[],int n)
{
int h[]={5,3,1},k=3;
int buoc,x,t;
for(int j=0;j<k;j++)
{
buoc=h[j];
for(int i=buoc;i<n;i++)
{
x=a[i];
t=i-buoc;
while((x<a[t]) && (t>=0))
{
a[t+buoc]=a[t];
t=t-buoc;
}
a[t+buoc]=x;
}
}
}
void noibot(int a[],int n)
{
for(int i = 0; i < n-1; i++)
for(int j = n-1; j > i; j--)
if (a[j-1] > a[j])
doicho(a[j], a[j-1]);
}
void sapxepnhanh(int a[],int l,int r)
{
int i,j,x;
x=a[(l+r)/2]; //chon phan tu trung vi lam moc
i=l;
j=r;
do
{
while(a[i]<x) //cac vi tri cua day <x
i++;
while(a[j]>x) //cac vi tri cua day >x
j--;
if(i<=j)
{
doicho(a[i],a[j]);
i++;
j--;
}
} while(i<=j);
if(l<j)
Quick(a,l,j);
if(i<r)
Quick(a,i,r);
}

void sapxep(int a[],int n)


{
sapxepnhanh(a,0,n-1);
}
void sapxep(int a[],int k1,int k2,int k3)
{ int i,j,k,T[k3-k1+1];
i=k1;
j=k2;
k=k1;
while (i<k2&&j<=k3)
{
if (a[i]<=a[j])
{
T[k]=a[i];
i=i+1;
}
else
{
T[k]=a[j];
j=j+1;
}
k=k+1;
}
if (i>=k2)
while (k<=k3)
{
T[k]=a[j];
j=j+1;
k=k+1;
}
if (j>k3)
while (k<k2)
{
T[k]=a[i];
i=i+1;
k=k+1;
}
for (k=k1;k<=k3;k++)
a[k]=T[k];

}
void sapxeptron(int a[],int k1,int k2)
{
t++;
int k3;
if(k1<k2)
{
k3=int((k1+k2)/2);
sapxeptron(a,k1,k3);
sapxeptron(a,k3+1,k2);
sapxep(a,k1,k3+1,k2);
}

You might also like