Корректность сортировки Шелла
Здраствуйте! Задали в универе написать алгоритм сортировки Шелла, с условием того, что нужно отсортировать лишь парные за значением отрицательные элементы (одномерного целочисленного массива) за модулем за возростанием. А элементы, которые не подходят под условие - оставить на местах. Не подскажите, правильно ли написан код? Заранее спасибо!
static int[] SortArray(int[] arr)
{
int gap = arr.Length/2;
int buff;
while (gap >= 1)
{
for (int i = gap; i < arr.Length; i++)
{
for (int j = i; j >= gap; j-=gap)
{
if ((Abs(arr[j - gap]) > Abs(arr[j])) &&
arr[j - gap] < 0 && arr[j] < 0 &&
arr[j - gap] % 2 == 0 && arr[j] % 2 == 0)
{
buff = arr[j];
arr[j] = arr[j - gap];
arr[j - gap] = buff;
}
else
break;
}
}
gap /= 2;
}
return arr;
}