冒泡排序(经典)

文章目录

冒泡排序

相邻的两个元素的比较,每次选出一个最大值。

总共由两次循环,外层循环为总共需要比较多少次,一般全部无序的数组,需要比较该数组的长度的值。

内层循环,每一次比较需要比较多少次,每一次都比上一次减少一次的次数。

注意点:

1.优化的 flag 是为了减少排序次数,如果在一次比较中都没有交换数据,那么这个数组就是有序的。

2.i 的初始化为 0,是j的初始化也为 0,注意 j 的终止条件为:j < arr.length - i - 1,是为了防止越界。

详细代码

java 复制代码
public class BubbleSort {

    public static void main(String[] args) {
    //初始化数组
        int[] arr = {1, 5, 3, 456, 5, 6, 7, 13, 9, 100};
        System.out.println("排序前:" );
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        BubbleSort bubbleSort = new BubbleSort();
        bubbleSort.BubbleSortMethod(arr);
        System.out.println("排序后:" );
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    public int[] BubbleSortMethod(int arr[]){

        int temp;

        boolean flag = true;//优化的flag是为了减少排序次数,如果在一次比较中都没有交换数据,那么这个数组就是有序的。

        for (int i = 0; i < arr.length; i++){
            for (int j = 0; j < arr.length  - i - 1; j++) { //j < arr.length  - i - 1,是为了防止越界
                if (arr[j] > arr[j+1]) {
                    temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;

                    flag = false;
                }
            }
            if (flag){
                break;
            }
        }

        return arr;
    }
}

我是小辉,24 届毕业生。当下是找工作ing,欢迎关注,持续分享。

相关推荐
m沐沐17 分钟前
【自然语言处理】词向量转换与中文文本情感分类——从CountVectorizer到朴素贝叶斯
人工智能·算法·机器学习·自然语言处理·分类·中文分词·词向量转换
科学实验家34 分钟前
01背包问题
算法
普通攻击往后拉36 分钟前
Leetcode 448. 找到所有数组中消失的数字
算法·leetcode·职场和发展
mifengxing1 小时前
LeetCode 189 轮转数组|3种解法拆解,从暴力到O(1)原地最优解
数据结构·算法·leetcode
MIngYaaa5201 小时前
2026暑期牛客多校3 2026-7-24
数据结构·算法·000
2501_937860941 小时前
Java 集合底层深度剖析:Map 与 Set、二叉搜索树、哈希表全解
java·数据结构·散列表
geats人山人海2 小时前
算法基础第二讲 基础算法下
算法
Hommy882 小时前
【剪映小助手】字符串列表转对象接口(Str List To Obds)
数据结构·list·剪映小助手·视频剪辑自动化·剪映api·开源剪映小助手
阳明山水2 小时前
销量预测2026下半年:新架构、新基准与新共识
人工智能·深度学习·算法·机器学习·架构
知识分享小能手2 小时前
高等数学学习教程,从入门到精通,定积分 — 知识点全面总结(9)
学习·算法·机器学习