java算法冒泡排序

简介: java算法冒泡排序

简介


冒泡排序是将一个数组里面的数据,安装由小到大的数据排序,就像水的冒泡一样,气泡大的在上面,所以定义为冒泡排序.


原理


用第一个数据,依次去跟第二个,第三个数据进行比较,一直到最后.如果该数值大于要比较的值,则进行换位,然后拿换位后的数据接着去比较.第一轮比较结束,然后开始第二轮比较,第二轮比较从还是从第一个开始,但是只需要比较到倒数第二位即可,因为第一轮的比较一定是最大的在后面.依次重复比较,直到全部比较完成.


复杂度


冒泡排序法的时间复杂度为O(n2) ,空间复杂度为O(1).


核心代码实现

        int tmp;  
        for (int i = 0; i < arr.length; i++) {  
            for (int j = i; j < array.length-1-i; j++) {
                if(array[j] > array[j+1]){
                    int tmp;
                    tmp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = tmp;
                }
        }

我们首先定义一个临时数据,进行数据的交换,两个数值互换是需要借助第三个变量的.开始循环进行两个数值的大小比对,写一个for循环,起始角标为0,结束角标为数据的最后一个角标.接着再写一个for循环,比较的时候从第二个位置开始比较,如果第一个数值大于第二个数值,则进行数值互换. 数值互换技巧,首先将数值大的  array[j] 赋值给临时变量tmp,然后将 小的数值 arr[j+1] 的值赋给变量 array[j] ,接着将临时变量的值赋给 array[j+1] ,这样就直实现了变量互换. 然后往下比较,一直比较到最后,第一轮比较完成,最大的值已经在最后一位.第二轮比较开始,从第一位开始,这次比较到倒数第二位即可.依次比较,执行完以后,即可输出最终结果.

相关文章
|
1月前
|
设计模式 算法 搜索推荐
Java 设计模式之策略模式:灵活切换算法的艺术
策略模式通过封装不同算法并实现灵活切换,将算法与使用解耦。以支付为例,微信、支付宝等支付方式作为独立策略,购物车根据选择调用对应支付逻辑,提升代码可维护性与扩展性,避免冗长条件判断,符合开闭原则。
259 35
|
1月前
|
存储 算法 搜索推荐
《数据之美》:Java数据结构与算法精要
本系列深入探讨数据结构与算法的核心原理及Java实现,涵盖线性与非线性结构、常用算法分类、复杂度分析及集合框架应用,助你提升程序效率,掌握编程底层逻辑。
|
1月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
6月前
|
人工智能 算法 NoSQL
LRU算法的Java实现
LRU(Least Recently Used)算法用于淘汰最近最少使用的数据,常应用于内存管理策略中。在Redis中,通过`maxmemory-policy`配置实现不同淘汰策略,如`allkeys-lru`和`volatile-lru`等,采用采样方式近似LRU以优化性能。Java中可通过`LinkedHashMap`轻松实现LRUCache,利用其`accessOrder`特性和`removeEldestEntry`方法完成缓存淘汰逻辑,代码简洁高效。
298 0
|
5月前
|
存储 算法 安全
Java中的对称加密算法的原理与实现
本文详细解析了Java中三种常用对称加密算法(AES、DES、3DES)的实现原理及应用。对称加密使用相同密钥进行加解密,适合数据安全传输与存储。AES作为现代标准,支持128/192/256位密钥,安全性高;DES采用56位密钥,现已不够安全;3DES通过三重加密增强安全性,但性能较低。文章提供了各算法的具体Java代码示例,便于快速上手实现加密解密操作,帮助用户根据需求选择合适的加密方案保护数据安全。
415 58
|
4月前
|
机器学习/深度学习 算法 Java
Java实现林火蔓延路径算法
记录正在进行的森林防火项目中林火蔓延功能,本篇文章可以较好的实现森林防火蔓延,但还存在很多不足,如:很多参数只能使用默认值,所以蔓延范围仅供参考。(如果底层设备获取的数据充足,那当我没说)。注:因林火蔓延涉及因素太多,如静可燃物载量、矿质阻尼系数等存在估值,所以得出的结果仅供参考。
71 4
|
4月前
|
搜索推荐 算法 Go
Go语言数组排序(冒泡排序法)—— 用最直观的方式掌握排序算法
本案例介绍使用冒泡排序对整数数组进行升序排序的实现方法,涵盖输入处理、错误检查与排序逻辑。通过代码演示和算法解析,帮助理解排序原理及Go语言切片操作,为学习更复杂排序算法打下基础。
|
3月前
|
运维 监控 算法
基于 Java 滑动窗口算法的局域网内部监控软件流量异常检测技术研究
本文探讨了滑动窗口算法在局域网流量监控中的应用,分析其在实时性、资源控制和多维分析等方面的优势,并提出优化策略,结合Java编程实现高效流量异常检测。
145 0
|
4月前
|
存储 负载均衡 算法
我们来说一说 Java 的一致性 Hash 算法
我是小假 期待与你的下一次相遇 ~
165 1
|
4月前
|
搜索推荐
冒泡排序与其它排序算法比较
本内容比较了冒泡排序、选择排序和插入排序的特性。三者时间复杂度均为O(n²),但交换次数和稳定性不同。冒泡排序稳定,交换次数多,可优化至O(n);选择排序不稳定,交换次数少;插入排序交换次数最少,且二者均为稳定排序。对于有序数组,冒泡和插入可优化提升效率。
98 0

热门文章

最新文章

下一篇
oss云网关配置