使用相同的java类对排序整数和字符串进行排序(冒泡排序)

时间:2017-11-16 10:38:20

标签: java string class sorting bubble-sort

如何修改冒泡排序整数的代码,以便我可以将其重新用于字符串?或者我是否需要创建一个全新的类来排序字符串。谢谢!

MAIN CLASS

public class BubbleSortTest {

    public static void main(String[] args) {
        Integer[] integers = {25, 15, 45, 5, 40, 50, 10, 20, 35, 30};
        ArrayUtility.display(integers);
        BubbleSort.sort(integers);
        ArrayUtility.display(integers);

        String[] strings = {"def", "efg", "bcd", "abc", "fgh", "cde", null};
        ArrayUtility.display(strings);
        BubbleSort.sort(strings);
        ArrayUtility.display(strings);
    }
}

分类:

public class BubbleSort {

    public static void sort(Integer[] numbers) {
        Integer temp;

        for (Integer i = 0; i < numbers.length; i++) {
            for (Integer j = 1; j < (numbers.length) - i; j++) {
                if (numbers[j - 1] > numbers[j]) {

                    //SWAPPING ELEMENTS
                    temp = numbers[j - 1];
                    numbers[j - 1] = numbers[j];
                    numbers[j] = temp;
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用Generic Types

这样的事情可能有效:

public static <E extends Comparable<E>> void bubbleSort(E[] unsorted) {
        for(int iter =1; iter< unsorted.length; iter++){
            for(int inner = 0; inner < (unsorted.length - iter); inner ++){
                if(unsorted[inner].compareTo(unsorted[inner+1]) > 0){
                    E tmp = unsorted[inner];
                    unsorted[inner] = unsorted[inner + 1];
                    unsorted[inner + 1] = tmp;
                }                
            }
        }
    }

这意味着,该方法适用于任何类型的数组,只要它实现Comparable即可。无论何种类型,都将在整个方法中用作E。由于编译器知道EComparable,编译器知道此类对象具有.compareTo(...)