Сортировка перемешиванием (Шейкерная сортировка) (англ. Cocktail sort) — разновидность пузырьковой сортировки. Анализируя метод пузырьковой сортировки можно отметить два обстоятельства.
Пример:
Wiki: Шейкерная сортировка
- Во-первых, если при движении по части массива перестановки не происходят, то эта часть массива уже отсортирована и, следовательно, ее можно исключить из рассмотрения.
- Во-вторых, при движении от конца массива к началу минимальный элемент “всплывает” на первую позицию, а максимальный элемент сдвигается только на одну позицию вправо.
Пример:
int* ShakerSort(int* Array, int SizeArray)
{
int i=0;
int tmp=0;
int left=0;
int right=SizeArray-1;
while(left<right)
{
for(i=left; i<right; i++)
{
if(Array[i]<Array[i+1])
{
tmp=Array[i];
Array[i]=Array[i+1];
Array[i+1]=tmp;
tmp=i;
}
}
right=tmp;
if(left<=right)
{
break;
}
else
{
for(i=right; i<left; i--)
{
if(Array[i-1]<Array[i])
{
tmp=Array[i];
Array[i]=Array[i-1];
Array[i-1]=tmp;
tmp=i;
}
}
left=tmp;
}
}
return Array;
}
Wiki: Шейкерная сортировка
Комментариев нет:
Отправить комментарий