0
点赞
收藏
分享

微信扫一扫

十大排序--冒泡排序

残北 2022-04-02 阅读 68

冒泡排序

介绍

步骤

  • 比较相邻元素,如果前者比后者大就交换;
  • 经历 n次比较,此时最大值放置在最后一位;
  • 重复n次,每次循环不包括最后一位(上次循环后已有序),数组中所有元素有序;

演示

推荐排序算法动态调试、演示网站: https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html

图片来源于:https://www.runoob.com/w3cnote/bubble-sort.html

代码与思想

/**
 * TODO 冒泡排序
 *
 * @author nanfeng
 * @date 2022/03/23/ 19:55
 */
public class BubbleSort {
    public static void main(String[] args) {
        int[] nums = new int[]{711,42,333,6,7555,85,93,24,30,177};
        bubbleSort(nums);
        System.out.println(Arrays.toString(nums));
    }

    static void bubbleSort(int[] nums) {
        // 标志位(是否交换===是否仍有未排序的元素)
        boolean flag;
        for (int i = 0; i < nums.length; i++) {
            // 初始值
            flag = false;
            // 从 1 开始到 nums.length - i
            // 一层循环代表找到最大的元素且已放置在最后一位,进入循环前已确定 i位
            // nums.length - i 到  nums.length都已有序
            for (int j = 1; j < nums.length - i; j++) {
                // 较大值向后交换
                if (nums[j - 1] > nums[j]) {
                    int temp = nums[j - 1];
                    nums[j - 1] = nums[j];
                    nums[j] = temp;
                    // 发生交换标志
                    flag = true;
                }
            }
            // 没有交换,已全部有序
            if(!flag) break;
        }
    }
}
举报

相关推荐

0 条评论