Корректность сортировки Шелла

Здраствуйте! Задали в универе написать алгоритм сортировки Шелла, с условием того, что нужно отсортировать лишь парные за значением отрицательные элементы (одномерного целочисленного массива) за модулем за возростанием. А элементы, которые не подходят под условие - оставить на местах. Не подскажите, правильно ли написан код? Заранее спасибо!

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;
        }

Ответы (0 шт):