Универсальный тайным выбор массива сортировка


Мой код работает, но мой IDE-это дает мне предупреждения непроверенные вызова метода. Я нашел полезную информацию о сопоставимых массивов здесь. Я нашел полезную информацию о непроверенный способ вызова здесь. Несмотря на это, я просто не могу понять, как угодить мой язь. Мое намерение состоит в том, чтобы иметь способ selectionSort отсортировать массив из целых чисел или парный используя метод compareto.

import java.util.Arrays;

class Main{
    public static void main(String[] args){

        Comparable[] data0 = {2, 8, -39, 904, 8, 0};
        Comparable[] data1 = {1.1, -5.68, 4.39, -0.01, 5.59};

        System.out.printf("Unsorted array: %s%n%n", Arrays.toString(data0));
        selectionSort(data0);
        System.out.printf("%nSorted array: %s%n", Arrays.toString(data0));

        System.out.printf("Unsorted array: %s%n%n", Arrays.toString(data1));
        selectionSort(data1);
        System.out.printf("%nSorted array: %s%n", Arrays.toString(data1));
    }

    private static <T extends Comparable<T>> void selectionSort(T[] data){
        for(int i = 0; i < data.length - 1; ++i){
            int smallest = i;

            for(int index = i + 1; index < data.length; ++index){
                if (data[smallest].compareTo(data[index]) > 0){
                    smallest = index;
                }
            }

            swap(data, i, smallest);
            printPass(data, i + 1, smallest);
        }
    }

    private static <T> void swap(T[] data, int first, int second){
        T temporary = data[first];
        data[first] = data[second];
        data[second] = temporary;
    }

    private static <T> void printPass(T[] data, int pass, int index){
        System.out.printf("after pass %2d: ", pass);

        for(int i = 0; i < index; ++i){
            System.out.printf("%s ", data[i]);
        }

        System.out.printf("%s* ", data[index]);

        for(int i = index + 1; i < data.length; ++i){
            System.out.printf("%s ", data[i]);
        }

        System.out.printf("%n               ");

        for (int j = 0; j < pass; j++){
            System.out.printf("-- ");
        }
        System.out.println();
    }
}


99
1
задан 4 апреля 2018 в 07:04 Источник Поделиться
Комментарии
1 ответ

Когда я положил это в IntelliJ с Мои настройки по умолчанию я уже вам предупреждение Comparable[] data0 декларации.


Используйте сырые параметризованных классов

Изменение массива деклараций на эти:

Integer[] data0 = {2, 8, -39, 904, 8, 0};
Double[] data1 = {1.1, -5.68, 4.39, -0.01, 5.59};

решить обе предупреждения.

1
ответ дан 4 апреля 2018 в 07:04 Источник Поделиться