9 мая 2015 г.

Оптимизированная "Пузырьковая" cортировка или "шейкер-сортировка"

template <class T>
void shakerSort(T a[], long size)
{
long j, k=size-1;
long lb=1, ub=size-1;
T x;

do
{
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;
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);
}

void main()
{
srand(time(NULL));
const long SIZE=10;
int ar[SIZE];

for(int i=0;i<SIZE;i++)
{
ar[i]=rand()%100;
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
shakerSort(ar,SIZE);

for(int i=0;i<SIZE;i++)
{
cout<<ar[i]<<"\t";
}
cout<<"\n\n";
}

Комментариев нет:

Отправить комментарий