Доработать метод на сортировку String массива

помогите пожайлуста доработать метод, чтобы он сортировал не int, а String массивы. ShellSort - этот метод называется. Если в общем по коду более-менее понятно, то в строке for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) не могу понять как переписать.

 int sort(int arr[]) 
        { 
            int n = arr.length; 
                for (int i = gap; i < n; i += 1) { 
                    int temp = arr[i]; 
                    int j; 
                    for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) 
                        arr[j] = arr[j - gap]; 
                    arr[j] = temp; 
                } 
            } 
            return 0; 
        }

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

Автор решения: Дмитрий
import java.util.Arrays;

class ShellSort {

    int sort(String arr[]) {
        for (int gap = arr.length / 2; gap > 0; gap /= 2) {
            for (int i = gap; i < arr.length; i += 1) {
                final String temp = arr[i];
                int j;
                for (j = i; j >= gap && arr[j - gap].compareTo(temp) > 0; j -= gap) {
                    arr[j] = arr[j - gap];
                }
                arr[j] = temp;
            }
        }
        return 0;
    }

    public static void main(String args[]) {
        String arr[] = {"xxx", "aaa", "ccc", "bbb", "zzz"};
        System.out.println("Array before sorting");
        System.out.println(Arrays.toString(arr));

        ShellSort ob = new ShellSort();
        ob.sort(arr);

        System.out.println("Array after sorting");
        System.out.println(Arrays.toString(arr));
    }
}

Во-первых, дискуссия не бесполезная, она заставила вас дополнить вопрос ссылкой на код, который вы пытались переписать, что перевело вопрос из категории "битва экстрасенсов" в более адекватную рубрику. Во-вторых, я не увидел в вашем коде ничего нового, т.е. отличного от исходника на сайте (кроме того, что он скопирован не в полном объеме, что сде5лал его еще и нарабочим). Ну и последнее, задача тривиальнее некуда, потому как для алгоритма сортировки не имеет никакого значения, с какими данными работать, следовательно все, что нужно изменить - сигнатуры методов (чтобы они принимали String вместо int), а также поменять оператор сравнения для arr[j - gap]>temp, который сравнивает int, на метод compareTo, сравнивающий String. Еще можно убрать метод печати массива, поскольку для ссылочных типов такой метод уже написан и достается из коробки. А раз задача такая тривиальная, я все пытался выяснить, что же вы дорабатывали и не смогли доработать, т.е. какое именно из 2 слов так и не удалось заменить: > на compareTo или int на String? но в любом случае желание разобраться - это уже хорошо, посему удачи в изучении Java)

→ Ссылка