冒泡排序应该是最经典的排序算法了,连我大学的C语言老师上课讲的第一个排序算法就是冒泡排序,略坑的我,当时听的还稀里糊涂的。
**实现思路也是非常非常简单:**两个for循环,然后分别判断相邻元素的大小:
- 如果要升序排,那么就判断后者是否小于前者,是就交换元素。
- 如果要降序排,那么就判断后者是否大于前者,是就交换元素。
public <T extends Comparable<T>> T[] bubbleSorting(T[] array, boolean ascend) {
int len = array.length;
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
/**
* 比较后者(j)与前者(i)的关系
* 如果后者比前者小就交换
*/
int compare = array[j].compareTo(array[i]);
if (compare < 0) {
T temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
System.out.print("i = " + i + " array = ");
for (T data : array) {
System.out.print(data + " ");
}
System.out.println("");
}
return array;
}
public static void main(String args[]) {
// 冒牌排序
BubbleSort bubbleSorting = new BubbleSort();
Integer[] object_3 = {24, 19, 26, 39, 36, 7, 31, 29, 38, 23};
System.out.println("\n冒泡排序\n");
Integer[] result_3 = bubbleSorting.bubbleSorting(object_3, true);
System.out.println("\n冒泡排序\n");
for (int i : result_3) {
System.out.print(i + " ");
}
}