package yzhou.sort; import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { int[] arr = { 9, 1, 2, 5, 4 }; sort(arr); System.out.println(Arrays.toString(arr)); } // 减少每一趟的次数 public static void sort(int[] arr) { boolean sorted = true; int len = arr.length; for (int j = 0; j < len - 1; j++) { sorted = true; System.out.println("第" + j + "趟"); for (int i = 0; i < len - 1 - j; i++) { System.out.println("第" + (i + 1) + "次"); if (arr[i] > arr[i + 1]) { int temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; sorted = false; } System.out.println(Arrays.toString(arr)); } if(sorted) { break; } } } }
boolean sorted = true; 作用:
冒泡排序,for循环始终比较两者之间的大小
先定义个boolean类型变量,假设等于 true,意思是:有些数据已经排序好,不要在去比较了
int[] 1,2,3,4,6
1 比较2 sorted = true;
2 比较3 sorted = true;
3 比较4 sorted = true;
4 比较6 sorted = true;
当sorted = true ,意味着,这些数据,已经排好序,小的在左边,大的在右边,不然,if条件成立的话,sorted = false;
int[] 1,3,2,7,8
1 比较3 sorted = true;
3 比较2 sorted = false;
…….
if条件成立,sorted = false,,说明,当前的数组中,有部分数据的左边大于右边