26Июл/100
Сортировка "Шейкер"
int shaker_sort(int *&mArray, int _size)
{
int L = 0;
int R = _size - 1;
int k = _size - 1;
do
{
for( int j = R; j >= L; j--) //Ставим на место самый маленький элемент
{
if(mArray[j-1] > mArray[j])
{
std::swap(mArray[j], mArray[j-1]);
k = j;
}
}
L = k + 1; //Сдвигаем левую границу
for(int j = L; j <= R; j++) //Ставим на место самый большой элемент
{
if(mArray[j-1] > mArray[j])
{
std::swap(mArray[j], mArray[j-1]);
k = j;
}
}
R = k - 1; //Сдвигаем правую границу
} while(L < R);
}
Leave a comment