@hax
junior developer

Как с помощью обобщений создать метод, сортирующий массив методом «пузырька»?

Как правильно описать метод, который сортирует массив числовых данных (double, int и т.д.) используя Дженерик?
Пробовал сделать как-то так:
public <Type extends Number> static void BubbleSort(Type array[]) { 
        for (int i = array.length - 1; i >= 0; i--)
            for (int j = 0; j < i; j++)
                if (array[j] > array[j+1]) { 
                    array[j] = array[j] - array[j+1]; 
                    array[j+1] = array[j+1] + array[j]; 
                    array[j] = array[j+1] - array[j]; 
                }
    }

Чтобы получить значение переменной array[i] я должен прописать array[i].intValue() или array[i].doubleValue() и т.п., но я хочу отсортировать массив любых числовых данных и заранее неизвестно, какой тип подается в метод.
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
А зачем вам делать intValue? Если у вашего обобщения есть операторы сравнения - то все равно что там за значение - пускай сам сравнивает.
Ответ написан
@hax Автор вопроса
junior developer
Реализовал так:
public static <Type extends Comparable<Type>> void BubbleSort(Type array[]) { 
        Type temp;
        for (int i = array.length - 1; i >= 0; i--)
            for (int j = 0; j < i; j++)
                if (array[j].compareTo(array[j+1]) > 0) {
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы