java冒泡排序

Java实现冒泡排序 欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。问题描述冒泡排序是一种简单的常见的排序算法,算法重复的... 阅读详情

最近一直有在看java相关的资料更深入的学习进步,但是越往深处里面学习,越觉得自己缺少的东西还是有点多,要想搞好编程,数据结构和算法的功力是必不可少的,所以还是哪里不会写哪里,开整:

研究一下 冒泡排序:Bubble Sort

原理:比较两个相邻的元素,将数值大的元素交换至右端

思路: 依次比较相邻的两个数,将小数放在前面,大数放在后面。第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。

第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不必参与比较

第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较

依次类推,每一趟比较次数-1;
…

举例: 排序数组:int[] arr ={7,3,2,5,4,1}

第一趟排序:

    第一次排序:7和3比较,7大于3,交换位置:3,7,2,5,4,1

    第二次排序:7和2比较,7大于2,交换位置:3,2,7,5,4,1

    第三次排序:7和5比较,7大于5,交换位置:3,2,5,7,4,1

    第四次排序:7和4比较,7大于4,交换位置:3,2,5,4,7,1

    第五次排序:7和1比较,7大于1,交换位置:3,2,5,4,1,7

第二趟排序:

    第一次排序:3和2比较,3大于2,交换位置:2,3,5,4,1,7

    第二次排序:3和5比较,3小于5,不交换位置:2,3,5,4,1,7

    第三次排序:5和4比较,5大于4,交换位置:2,3,4,5,1,7

    第四次排序:5和1比较,5大于1,交换位置:2,3,4,1,5,7

第三趟排序:

    第一次排序:2和3比较,2小于3,不交换位置:2,3,4,1,5,7

    第二次排序:3和4比较,3小于4,不交换位置:2,3,4,1,5,7

    第三次排序:4和1比较,4大于1,交换位置:2,3,1,4,5,7

第四趟排序:

    第一次排序:2和3比较,2小于3,不交换位置:2,3,1,4,5,7

    第二次排序:3和1比较,3大于1,交换位置:2,1,3,4,5,7

第五趟排序:

	第一次排序:2和1比较,2大于1,交换位置:1,2,3,4,5,7

至此排序完成 :1, 2, 3, 4, 5, 7

总结: N个数字要排序完成,总共进行N-1趟排序,每 i 趟 排序比较(N-i) 比较,故用双重循环语句控制,外层控制 趟数,内层循环控制每趟比较的次数


// 控制排序的趟数
for(int i=1;i<arr.length;i++) {   
 // 控制 每趟 比较的次数
  for(int j=0;j<arr.length-i;j++) { 
      // 交换位置
  }
}

冒泡排序:每进行一趟排序都会找到最大的数,放在最后的位置,每进行一趟就可以少比较一次。

第一趟排序完成之后,最后一个数,必定是最大的值

第二趟排序完成之后,倒数第二个数,就是倒数第二大的数,最后一个数不参与比较排序

第三趟排序… 倒数最后两个不参与比较排序,也就是说每一趟少比较一次,一定程度上减少了算法比较的次数

时间复杂度:

若我们的数据是正序,只需要一趟即可完成排序,所需要比较的次数C和记录移动次数M均为最小值即

Cmin=n-1 = O(n)
Mmin=0
所以冒泡排序最好的时间复杂度为O(n)
[添加标志位,flag = true 在程序中则可以有最小Cmin]

若数据为倒序,需要进行n-1趟排序。每趟排序需要进行n-i 次比较(1≤i≤n-1),且每次比较都必须移动数据三次(每次交换位置需要三次移动记录)来达到数据的位置。此种情况下,比较和移动的次数均达到最大值

Cmax=n(n-1)/2 =O(n²)
Mmax=3*n(n-1)/2=O(n²)

所以冒泡排序最坏的时间复杂度为O(n²)

综上:冒泡排序的平均时间复杂度为: O(n²)

空间复杂度:
空间复杂度主要看在交换元素时那个临时变量所占的内存空间,

最优的空间复杂度就是开始元素顺序已经排好了,则空间复杂度为:0;
最差的空间复杂度就是开始元素逆序排序了,则空间复杂度为:O(n);
平均的空间复杂度为:O(1);

排序代码实现:

public class BubbleSort {    
    static int[] arry = {8, 5, 3, 2, 1, 7, 10, 9, 4, 13, 11};
    public static void main(String[] args) {
       for (int i = 1; i < arry.length; i++) { //外层循环控制排序趟数
            // 内层循环 控制比较次数
          for (int j = 0; j < arry.length-i; j++) {
                if(arry[j]>arry[j+1]) {
                    int temp = arry[j];
                    arry[j] = arry[j+1];
                    arry[j+1] = temp;
                }
            }
        }
        System.out.println("排序后");
        for (int i : arry) {
            System.out.print(i + ",");
        }
    }
}
// 输出结果:
  排序后
  1,2,3,4,5,7,8,9,10,11,13,

代码亲测,自己手动敲的,

至此,正常情况下不想在往里面深究下去的看到这里就OK了。。。--------------------------------------------------------------

然而,我个人还是想再接着往下探究 ---->

那么问题来了,
什么是时间复杂度呢? 是怎么计算出来的呢?什么是O(n²) 了?

所以,咱们继续剖析:

再次查资料:

百度百科: 算法的时间复杂度是一个函数,它定性描述该算法的运行时间,

时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

这里面写的比较专业,需要高等数学功底才可以看的懂,像是使用用极限求解的某一种函数吧,

时间复杂度:说下个人的肤浅理解吧,字面意思呢就是执行该段代码所需要的时间的长短吧,当然是复杂度越小,执行代码消耗的时间越短越好了

关于这个里面的对应的函数就需要用高等数学中的函数来构建了: 目前对应的函数就是用O(n²) 来表示的

第一趟 比较5次 第二趟比较4次…

[5,4,3,2,1] 总共比较了 ∑n=1~5 = n(n-1)/2 = 15

按上面的这个例子 N =6 个 数字 排序总共比较了 C=15次

交换位置移动了M = [5,3,1,1,1]3 = 3(5+3+1+1+1)= 33次

故而 上面的这个例子中执行的时间复杂度,

综合大致上先认为是C+M= 15+33 = 48 来描述吧

这只是一种比较普通的例子,

在极端情况下:

正序:{1,2,3,4,5,6}

Cmin=n-1 当 n=6 时 Cmin = 5 次

Mmin=0

用代码来验证:添加flag =true

public class BubbleSort {    
    // 比较的次数
    private static int compareCount = 0;
    // 交换位置移动的次数
    private static int sweepCount = 0;
    static int[] arry = {1,2,3,4,5,6};
    boolean flag = true;
    public static void main(String[] args) {
       for (int i = 1; i < arry.length; i++) { //外层循环控制排序趟数
            // 内层循环 控制比较次数
          for (int j = 0; j < arry.length-i; j++) {
               compareCount++; // 记录比较的次数
                if(arry[j]>arry[j+1]) {
                    int temp = arry[j];
                    arry[j] = arry[j+1];
                    arry[j+1] = temp;
                    flag = false;
                    sweepCount+=3; // 记录交换位置移动的次数
                }
            }
            if(flag) break;
        }
        System.out.println("比较的次数compareCount="+compareCount);
        System.out.println("交换位置移动的次数sweepCount="+sweepCount);
        System.out.println("排序后");
        for (int i : arry) {
            System.out.print(i + ",");
        }
    }
}
// 输出结果:
  比较的次数compareCount=5
  交换位置移动的次数sweepCount=0
  排序后
  1,2,3,4,5,6,

倒序:{6,5,4,3,2,1}

Cmax=n(n-1)/2 =O(n²)

Mmax=3*n(n-1)/2=O(n²)

Cmax=n(n-1)/2 当n=6 时 最大的比较次数 = 15,

Mmax=3*n(n-1)/2 当n=6时 最大的移动次数= 45

代码验证:

public class BubbleSort {    
    // 比较的次数
    private static int compareCount = 0;
    // 交换位置移动的次数
    private static int sweepCount = 0;
    static int[] arry = {6,5,4,3,2,1};
    public static void main(String[] args) {
       for (int i = 1; i < arry.length; i++) { //外层循环控制排序趟数
            // 内层循环 控制比较次数
          for (int j = 0; j < arry.length-i; j++) {
               compareCount++; // 记录比较的次数
                if(arry[j]>arry[j+1]) {
                    int temp = arry[j];
                    arry[j] = arry[j+1];
                    arry[j+1] = temp;
                    sweepCount+=3; // 记录交换位置移动的次数
                }
            }
        }
        System.out.println("比较的次数compareCount="+compareCount);
        System.out.println("交换位置移动的次数sweepCount="+sweepCount);
        System.out.println("排序后");
        for (int i : arry) {
            System.out.print(i + ",");
        }
    }
}
// 输出结果:
  比较的次数compareCount=15
  交换位置移动的次数sweepCount=45
  排序后
  1,2,3,4,5,6,

由以上可以看出,
冒泡排序,在n相同的情况下,比较的次数
Cmin=n-1 = O(n)
Cmax=n(n-1)/2 = O(n²)

最终还是到了数学的函数公式上,函数 O(n²) 对应高等数学中的
至此剖析到了数学的函数上了。。。看来编程最底层的还是要看数学功底呀。。不说了,我也去学数学了。。

告别手动干预:深入浅出LPDDR5的Background ZQ校准与DVFSQ切换避坑指南 本文深入解析LPDDR5的Background ZQ校准与DVFSQ切换技术,帮助工程师实现DRAM阻抗校准的自动化管理。通过详细配置指南和实战案例,揭示如何避免动态电压调节下的模式切换陷阱,提升信号完整性和系统能效。特别适合嵌入式系统和移动终端开发者参考。 阅读详情

相关推荐

告别零散脚本:用Playwright+Pytest+Yaml+Allure搭建可维护的UI自动化项目

UI自动化测试是软件质量保障的关键环节,其核心在于模拟用户操作,对Web应用界面进行功能验证。传统的脚本堆砌方式常因代码耦合度高、维护成本大而难以为继。工程化解决方案通过分离关注点,将测试逻辑、数据和配置解耦,从而显著提升项目的可读性、可维护性和可扩展性。其技术价值在于构建可持续运行的自动化资产,而非一次性脚本。典型的应用场景包括Web应用的回归测试、兼容性测试及CI/CD流水线中的质量门禁。本文以Playwright、Pytest、Yaml和Allure为核心技术栈,详细阐述了如何从项目架构、页面对象模型

weixin_42529328的博客 300

排序算法之冒泡

冒泡排序 冒泡排序算法的时间复杂度O(n2) 最好情况,初始是排好序的,顺序,O(n) 最坏,整个数组是逆序,O(n2) 从小到大冒泡排序 从上到下比较两个相邻的元素,如果顺序正确,保持不变;如果是逆序,则交换两个元素的位置。完成一趟排序,最大的元素处于数组最后的位置。之后对前 N-1 个元素重复上述排序过程。 优化:如果在中间某一步,数组已经完成排序,完全有序。在一趟排序中,没有任何一对元素需要交换位置,则说明完全有序,从未调用swap函数。 优点:所有待排元素都放在链表中,排序稳定 稳定:只有当前元素严

qq_39220334的博客 3217

药物重定位实战:如何用反向找靶技术挖掘老药新用(附Python代码示例)

本文详细介绍了药物重定位中的反向找靶技术,通过分子相似性计算、机器学习模型和结构对接等方法,挖掘已有药物的新治疗潜力。附Python代码示例,帮助读者快速实现从分子结构到潜在靶标的智能预测,显著提升药物研发效率。

weixin_28726671的博客 259

[ 数据结构 -- 手撕排序算法第二篇 ] 冒泡排序

手撕排序算法系列之:冒泡排序。 从本篇文章开始,我会介绍并分析常见的几种排序,大致包括插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等。 大家可以点击此链接阅读其他排序算法:排序算法_大合集(data-structure_Sort) 本篇主要来手撕冒泡排序~~ 目录 1.常见的排序算法 1.1交换排序 2.冒泡排序的实现 2.1基本思想 2.2单趟冒泡排序 2.2.1思路分析 2.2.2单趟代码实现 3.冒泡排序代码实现 4.冒泡排序测试 5.冒泡排序..

优快云博客 7451

河道水位标尺识别预警 yolov7

河道水位标尺识别预警系统通过python+yolov7网络模型技术,河道水位标尺识别预警算法对河道水位标尺进行实时监测,当河道水位出现异常情况时,河道水位标尺识别预警算法将自动发出警报提示后台管理人员及时采取措施。YOLO系列算法是一类典型的one-stage目标检测算法,其利用anchor box将分类与目标定位的回归问题结合起来,从而做到了高效、灵活和泛化性能好,所以在工业界也十分受欢迎。Yolo模型采用预定义预测区域的方法来完成目标检测,具体而言是将原始图像划分为 7x7=49 个网格(grid),每

燧机科技的博客 2303

三相Vienna整流器过零点电流畸变?试试这个SVPWM调制波补偿技巧

本文针对三相Vienna整流器在电流过零点附近出现的电流畸变问题,提出了一种基于SVPWM调制波补偿的有效解决方案。该方法通过注入零序分量重构占空比,巧妙解决因拓扑约束导致的调制矛盾,在基本不增加计算复杂度的前提下,显著平滑电流波形,降低THD。

weixin_29212867的博客 115

冒泡排序(空间复杂度,时间复杂度,稳定性分析,代码,图解)

对于算法的稳定性而言,我们先假设,在此时序列中有两个相邻的值为 13 的元素(其它重复元素同理,不是相邻的话在冒泡的过程中也会有相邻的状态),根据判断条件 i > j , 且 A[i] == A[j] ,在做冒泡排序的时候,13 和 另外一个13之间不会发生位置的交换;冒泡排序法是把N个数通过N-1轮排序,升序排序中大的数往下沉,小的数往上浮,降序排序中小的数往下沉,大的数往上浮。冒泡排序需要进行n-1趟冒泡,每一趟需要比较n-i次,最坏情况下需要交换n-1次,故时间复杂度为。所以,冒泡排序是一种。

我的博客 4163

Transformer模型详解(图解最完整版)

Transformer由论文提出,现在是谷歌云TPU推荐的参考模型。论文相关的Tensorflow的代码可以从GitHub获取,其作为Tensor2Tensor包的一部分。哈佛的NLP团队也实现了一个基于PyTorch的版本,并注释该论文。在本文中,我们将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。Transformer 与 RNN 不同,可以比较好地并行训练。

2501_91695094的博客 2703

常见的排序算法的时间复杂度

接着,对每个桶中的元素进行排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序),最后依次将各个桶中的元素取出,得到的就是有序序列。计数排序不是基于比较的排序算法,其优势在于在对一定范围内的整数排序时,复杂度为O(n+k),其中n为输入元素个数,k为待排序列中最大的数。例如,如果数据的范围非常大,或者数据的分布极不均匀,那么可能需要大量的桶,这可能导致空间复杂度的增加。基数排序的时间复杂度是线性的,为O(dn),其中d为数字的位数,n为待排序序列的长度。因此,时间复杂度为O(n^2)。

码字不易,大家的支持就是我坚持下去的动力 2万+

Eplan设计师必会—伺服安全回路的设计方法

本文介绍了在EPLAN中设计伺服STO安全回路的方法。首先需查阅伺服驱动器说明书确定STO接线端子,重点关注双通道配置。设计步骤包括:使用黑盒子功能绘制驱动器外形,正确标注STO接线点,并连接安全继电器或PLC的安全输出。关键注意事项有:必须采用双通道独立布线,确保同步动作,遵循故障安全原则,使用常闭触点串联回路。文中以西门子V90和汇川伺服为例说明具体接线要求,并附有项目实例参考。

Qinmingyue13的博客 436

游戏大厂状态同步与帧同步技术全解析——让虚拟世界万物协同的“时间齿轮”

本文深入解析了大厂游戏开发中的两种核心同步技术:状态同步和帧同步。状态同步适合大型MMO和FPS游戏,由服务端计算并广播世界状态;帧同步则通过统一操作输入实现MOBA和RTS游戏的绝对公平。文章详细比较了两者的差异、适用场景和底层实现原理,并揭秘了《王者荣耀》《PUBG》等热门游戏的同步机制。同时探讨了本地预测、延迟补偿、防作弊等关键技术,以及未来AI和云游戏带来的同步新挑战,为开发者提供了全面的技术参考和实践指南。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 921

排序算法之 冒泡排序 及其时间复杂度和空间复杂度

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。 算法分析 冒泡排序算法是所有排序算法中最简单的(前面也提到过),在生活中应该也会看到气泡从水...

weixin_43419883的博客 4万+

华为OD机试双机位C卷-恢复数字序列 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 恢复数字序列,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 恢复数字序列。

qq_45776114的博客 1203

JAVA冒泡排序

JAVA冒泡排序1.问题描述2.分析3.代码实现 1.问题描述 水泡从水底到水面,从小变大, 冒泡排序:将一个数组以升序或降序排列,相邻两个数比较,将大的往后排(或往前排), 进行多次比较换位置,最终得到一个排列好的数组, 针对数组中所有的数进行排序,从数组下标为0的数开始,相邻的数进行比较,大的往后换,小的往前换, 第一次:对n个数需要进行n-1次比较, 第二次:对n-1个数进行n-2次比较 … 直到最终不需要换位置。 2.分析 对一个数组进行排序,依靠数组下标访问数组中的每个元素, 首先:冒泡排序从数组

weixin_44712669的博客 1504

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java中的冒泡排序

Java中的冒泡排序冒泡排序的原理冒泡排序算法 冒泡排序的原理 冒泡排序算法通过重复比较,将数组中相邻的两个数据元素进行交换。在这个过程中,不断将小的值移向一端,大的值移向另一端,从而达到排序的目的。 冒泡排序算法 核心算法: //Bubble Sort for(int i = 1; i < length; ++i){ for (int j = length - 1; j >= i;...

蜗小牛的博客 3万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java冒泡排序和双向冒泡排序算法

java实现冒泡排序 一、冒泡排序: 利用冒泡排序对数组进行排序 二、基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的)

zhuyue_981025的博客 1196

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java冒泡排序代码_Java冒泡排序

一、冒泡排序:利用冒泡排序对数组进行排序二、基本概念:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2...

weixin_39858124的博客 2614

Java冒泡排序

在Java中有很多排序算法,其中最经典的要数冒泡排序了,由于有时会忘记这些排序是怎么实现的,所以在此记录一下。 public class BubbleSort { public static void main(String[] args) { int[] arr = {50,15,56,23,54,84,58,45,21}; for(int i = 0; i < ar...

Emperor_Hd的博客 3654

Java 冒泡排序

Java 冒泡排序 以升序排序为例,从上往下,两两之间进行比较,若上面的数比下面的数大,则交换位置,也就是较大者下沉,这样每一轮比较结束都会产生一个本轮次的最大值,较小的数就会不断向上移动,好像气泡向上漂浮一样。 特点: 升序排序中每一轮比较会把最大的数沉到最底,所以每一轮比较的次数都会比上一轮少一次。 为了方便大家理解,我做了一张动图来演示这一过程。 冒泡排序动画演示: 思路分析: 如上图所示, 黄,绿,蓝,红 分别表示冒泡排序的4轮比较 第一轮[黄色] 比较了4次 第二轮[绿色] 比较了3次 第三轮[

才哈哈的博客主页 2838

java冒泡排序(java冒泡排序经典代码)

java中最简单的方法冒泡排序? package bubble_sort; import java.util.Scanner; public class Sort { * 冒泡排序 * @param args public static void main(String[] args) { //...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 1377

冒泡排序程序java_冒泡排序Java程序

冒泡排序程序javaBubble sort in java is the simplest sorting technique. In bubble sort algorithm each element is compared to next adjacent element, if the next element is smaller, then it will be swapped by ...

culing2941的博客 1086

java 冒泡排序

1.冒泡排序法是一种简单的排序算法 2.它重复地走访过要排序的数组,一次比较两个元素,如果他们的顺序错 误就把他们交换过来。走访数组的工作是重复地进行直到没有再需要交 换,也就是说该数组已经排序完成。 代码如下: public class Maopao { public static void main(String args[]) { //需要排序的数组,利用冒泡排序法让其从小...

weixin_44331899的博客 867

java排序链表冒泡排序_Java中的冒泡排序

java排序链表冒泡排序Java Sorting is one of the many aspects of java interview questions. In this post, we will see java bubble sort example and write a program for bubble sort. Java排序是Java面试问题的众多方面之一。 在这篇文章中,...

从零开始的教程世界 1857

Java冒泡排序详解

Java冒泡排序 排序算法概述 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。 稳定性:一个排序算法是稳定的,就是当有两个相等记录的关键字R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。 如果算法是稳定的有什么好处呢?排...

BigMoreKT的博客 1441

java冒泡排序_冒泡排序(java)

0. 说明最近工作中遇到了排序的需要,其实很简单,就是两个PO按照时间的字段排序后将结果返回前端,很简单的一个需求,但是却让我感觉应该将排序算法,整理一下。今天在本文中,我们就先整理下冒泡排序的算法,在着重分析下怎么交换两个数据。1. 冒泡排序冒泡排序算法,理论很简单,就是通过遍历,每次遍历将最小(最大)值放在为排序数组中最前面的位置。画个图下看下大概的流程。图中的测试数据数组为[6,4,2,8,...

weixin_39845241的博客 664

冒泡排序java代码

还可以优化的,小白可以参考一下

zgq258的博客 6946
上一篇: 配置Springboot支持https和http协议
下一篇: java 代理模式[Proxy]--AOP
xiaolong_java
博客等级 码龄12年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值