数组排序和集合排序在原理上是一致的,博主看来,集合只是数组的特殊形式。
废话不多说,首先讲一下冒泡的最核心步骤:控制好位置,每次取最值。
怎么理解呢? 我们还是先上代码:
public static void lastBubbleSort(List<Integer> lists, Integer sortType) {
if(lists == null || lists.isEmpty()) {//验证排序内容
return;
}
if(sortType == null) {//验证排序方式
sortType = -1;
}
int length = lists.size();
int temp = null;
for (int i = length – 1; i > 0; i–) {
for(int j = 0; j < i; j++) {//每次内循环将最大值放到栈尾
if(sortType >= 0) {
if(lists.get(i) <= lists.get(j)) {
temp = lists.get(i);
lists.set(i, lists.get(j));
lists.set(j, temp);
}
} else { //每次将最小值放到栈尾
if(lists.get(i) >= lists.get(j)) {
temp = lists.get(i);
lists.set(i, lists.get(j));
lists.set(j, temp);
}
}
}
}
}
外层循环控制比较位置,内循环与外层循环位置的值比较,查找到内循环中最大值,内循环结束后,外循环位置放置的value值则是前面集合或数组的最大值。