要点:元素与旁边元素比较,根据比较结果,决定是否需要交换位置。
import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { int[] arr = {3, 9, -1, 10, -20}; System.out.println(Arrays.toString(arr)); //int[] arr = {1,2,3,4,5}; bubbleSort(arr); System.out.println(); } private static void bubbleSort(int[] arr) { int length = arr.length; int tem = 0; //是否需要交换 boolean flag = false; for (int i = 0; i < length - 1; i++) { System.out.printf("第%d轮开始\n", i + 1); flag = false; //数值大的排到后边 for (int j = 0; j < length - i - 1; j++) { if (arr[j] > arr[j + 1]) { tem = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = tem; flag = true; } System.out.println(Arrays.toString(arr)); } //如果一次排序中没有方式过交换 if (!flag) { break; } } } }
[3, 9, -1, 10, -20] 第1轮开始 [3, 9, -1, 10, -20] [3, -1, 9, 10, -20] [3, -1, 9, 10, -20] [3, -1, 9, -20, 10] 第2轮开始 [-1, 3, 9, -20, 10] [-1, 3, 9, -20, 10] [-1, 3, -20, 9, 10] 第3轮开始 [-1, 3, -20, 9, 10] [-1, -20, 3, 9, 10] 第4轮开始 [-20, -1, 3, 9, 10]