如何修改冒泡排序整数的代码,以便我可以将其重新用于字符串?或者我是否需要创建一个全新的类来排序字符串。谢谢!
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;
}
}
}
}
}
答案 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
。由于编译器知道E
是Comparable
,编译器知道此类对象具有.compareTo(...)
。