目录

冒泡排序(经典)

文章目录

冒泡排序

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

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

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

注意点:

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,欢迎关注,持续分享。

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
冷月半明12 分钟前
Prophet预测波动性实战:5招让你的时间序列曲线"活"起来 破解预测曲线太平滑的行业痛点
后端·算法·机器学习
Ayanami_Reii27 分钟前
NOIP2011提高组.玛雅游戏
算法·游戏·深度优先
_extraordinary_39 分钟前
笔试专题(六)
算法·哈希算法·贪心·模拟·滑动窗口·构造
学习编程的gas1 小时前
数据结构——堆的实现和堆排序
数据结构·算法
claude61 小时前
实测文心4.5与X1一个月后,我预测文心大模型4.5 Turbo将有这几个升级点
算法
jz_ddk1 小时前
[实战]多天线空域抗干扰技术:原理、数学推导与工程仿真(完整仿真代码)
python·算法·毕业设计·信号处理
Determined_man1 小时前
Mybatis-plus queryWrapper的使用
数据结构·数据库
dog shit2 小时前
蓝桥杯第十一届省赛C++B组真题解析
算法
Swift社区2 小时前
LeetCode 252 会议室题全解析:Swift 实现 + 场景还原
算法·leetcode·swift
要下雨了吗2 小时前
指针数组 vs 数组指针
c语言·数据结构·c++·算法·visual studio