java算法:使用冒泡算法对任何对象排序

146 阅读1分钟

1.普通的冒泡排序方法只能对数组进行排序

public static void bubbleSort(int[] numbers) {

int temp;

boolean flag = true;

int size = numbers.length;

for (int i = 1; flag && i <= size - 1; i++) {

flag = false;

for (int j = 0; j < size - i; j++) {

if (numbers[j] < numbers[j + 1]) {


temp = numbers[j];

numbers[j] = numbers[j + 1];

numbers[j + 1] = temp;

flag = true;

}

}

}

}


2.对任何对象都可以进行排序



/**

* 用冒泡排序对任何对象排序


*extends 在这里不表示继承的关系,而是类型的限定


*Comparable类 用于比较两个对象的大小

*

* @param x 对象

*/

public static <T extends Comparable<T>> void bubbleSort(T[] x) {

T temp;

boolean flag = true;

int size = x.length;

for (int i = 1; flag && i <= size - 1; i++) {

flag = false;

for (int j = 0; j < size - i; j++) {

if (x[j].compareTo(x[j + 1]) > 0) {

temp = x[j];

x[j] = x[j + 1];

x[j + 1] = temp;

flag = true;

}

}


}


}


3.在不知道具体的对象时,应该怎么使用冒泡排序


/*


*传入一个带泛型的比较器-->Comparator


*/

public static <T extends Comparable<T>> void bubbleSort(T[] x,Comparator<T> comparator) {

T temp;

boolean flag = true;

int size = x.length;

for (int i = 1; flag && i < size - 1; i++) {

flag = false;

for (int j = 0; j < size - i; j++) {

if (comparator.compare(x[j], x[j + 1]) > 0) {

temp = x[j];

x[j] = x[j + 1];

x[j + 1] = temp;

flag = true;

}


}