思路:
- 外层循环控制循环次数(i<len),设置swapFlag=false
- 内层循环j=1(j<len-i),两两(j和j-1)比较,逆序则交换
- 内层每次循环结束,没有交换,则break结束
内层循环j从1开始,小于len,小于len-i。
代码
public static void bubbleSort(List<Integer> list) {for (int i = 0; i < list.size(); i++) {boolean swapFlag = false;for (int j = 1; j < list.size()-i; j++) {if (list.get(j - 1) > list.get(j)) {Integer sj = list.get(j);list.set(j, list.get(j-1));list.set(j-1, sj);swapFlag = true;}}if (!swapFlag) {break;}}}public static void main(String[] args) {List<Integer> list = Arrays.asList(new Integer[]{8, 4, 1, 88 , 1999, 33, 88, 33, 2, 9, 1, 3, 37, 0, 84, 25, 5, 3, 27});ActivityService.bubbleSort(list);System.out.println(list);}