Шейерная сортировка (сортировка перемешиванием) - продвинутая версия пузырьковой сортировки.
//<summary>Шейкерная сортировка</summary>
//<param name="array">Массив</param>
private static void Cocktail(ref int[] array)
{
var n = array.Length - 1;
var left = 0;
var right = n;
var b = false;
while (!b)
{
b = true;
for (var i = left; i < right; i++)
{
if (array[i] <= array[i + 1]) continue;
Swap(ref array[i + 1], ref array[i]);
b = false;
}
right--;
for (var i = right; i >= left; i--)
{
if (array[i + 1] >= array[i]) continue;
Swap(ref array[i + 1], ref array[i]);
b = false;
}
left++;
}
}
//<summary>Обмен (swap) значений между двумя элементами массива</summary>
//<param name="i">Ссылка на первый элемент</param>
//<param name="j">Ссылка на второй элемент</param>
private static void Swap(ref int i, ref int j)
{
i = i + j;
j = i - j;
i = i - j;
}