Алгоритм сортировки, похожий на сортировку вставками, но в отличие от последней перед вставкой на нужное место происходит серия обменов. Алгоритм находит первое место, где два соседних элемента стоят в неправильном порядке
и меняет их местами. проверить позицию до переставленных элементов.
public static void GnomeSort(int[] array)
{
int i = 1;
int j = 2;
while (i < array.Length)
{
if (array[i - 1] <= array[i])
{
i = j;
j++;
}
else
{
int temp = array[i - 1];
array[i - 1] = array[i];
array[i] = temp;
i -= 1;
if (i == 0)
{
i = 1;
j = 2;
}
}
}
}