排序思路
冒泡排序是最基础的排序算法,由于其直观性,经常作为首个介绍的排序算法。其原理为:
内循环: 使用相邻双指针 j , j + 1 从左至右遍历,依次比较相邻元素大小,若左元素大于右元素则将它们交换;遍历完成时,最大元素会被交换至数组最右边 。
外循环: 不断重复「内循环」,每轮将当前最大元素交换至 剩余未排序数组最右边 ,直至所有元素都被交换至正确位置时结束。
- 时间复杂度 O(N^2)
 
冒泡排序优化
可以给每轮循环设置一个标志位,如果本次循环没有交换一个元素,说明此时数组有序,不需要排序。
/*** 冒泡排序(带标志位)*/public class BubbleSort {public static void main(String[] args) {int[] nums = new int[]{1,3,5,4,8,6,7,8,10,22,55};for (int i = 0; i < nums.length - 1; i++) {boolean flag = false; // 标志位for (int j = i; j < nums.length - 1; j++) {if (nums[j] > nums[j + 1]) {int temp = nums[j];nums[j] = nums[j + 1];nums[j + 1] = temp;flag = true; // 如果进行了一次交换,标志位设为true}}if (!flag) {break; // 内循环未交换任何元素,则跳出}}for (int num : nums) {System.out.print(num + " ");}}}
