首页 > 编程语言 >java冒泡排序的三种实现方法

java冒泡排序的三种实现方法

时间:2024-01-28 22:57:04浏览次数:29  
标签:java 变量 nums int 冒泡排序 三种 排序 bubble public

第一种

通过简单的比较相邻的元素,如果他们的顺序是错误的,则交换它们的位置。
重复这个步骤,直到没有更多要交换的元素为止。
j变量代表未排序数组范围的右边界,j以后的已经排序

public static void bubble(int[] nums,int j){
        if(j == 0){
            return;
        }
        for (int i = 0; i < j; i++) {
            if(nums[i] > nums[i+1]){
                int a = nums[i];
                nums[i] = nums[i+1];
                nums[i+1]= a;
            }
        }
        bubble(nums,j-1);
    }

第二种

这里的x变量其实是一个分界的变量
x的左边未排序 右边则不需要排序
从而提高排序效率

    public static void bubble_plus(int[] nums,int j){
        if(j == 0){
            return;
        }
        int x = 0;
        for (int i = 0; i < j; i++) {
            if(nums[i] > nums[i+1]){
                int a = nums[i];
                nums[i] = nums[i+1];
                nums[i+1]= a;
                x = i;
            }
        }
        bubble_plus(nums,x);
    }

第三种

这种其实是对第一种的补充
x变量代表未排序变量的左边界
x之前以及j之后都已经排序
因此不需要再排序,提高效率

public static void bubble_pro(int[] nums,int j,int x){
        if(j >= x){
            return;
        }
        for (int i = 0; i < j; i++) {
            if(nums[i] > nums[i+1]){
                int a = nums[i];
                nums[i] = nums[i+1];
                nums[i+1]= a;
            }
        }
        bubble_pro(nums,j-1,x+1);
    }

标签:java,变量,nums,int,冒泡排序,三种,排序,bubble,public
From: https://www.cnblogs.com/xiaofengs/p/17993571

相关文章

  • 学习笔记推荐:极客时间《Java常见错误100例》
    最近,我有幸接触了一套非常精彩的学习笔记,《Java常见错误100例》。(手册链接在文末!!!)这套学习笔记出自极客时间,对于想要在Java开发领域深耕细作的朋友们来说,它无疑是一个不可多得的宝藏。接下来,我将结合其内容目录中的一些亮点,为大家进行简要介绍。首先,这套学习笔记囊括了Java......
  • Java学习日记 Day14
    算法:①二叉搜索树的最近祖先:我用了二叉树最近祖先的同样的方法,没有考虑二叉树的定义。还是先判断当前节点情况,然后做递归调用,判断左右节点的情况。②二叉搜索树添加节点:这个要明白添加的节点一定在最后,所以只要判断节点数值大小,一直递归调用就好。③二叉搜索树删除节点:删除分几......
  • 每日一道面试题:Java中序列化与反序列化
    写在开头哈喽大家好,在高铁上码字的感觉是真不爽啊,小桌板又拥挤,旁边的小朋友也比较的吵闹,影响思绪,但这丝毫不影响咱学习的劲头!哈哈哈,在这喧哗的车厢中,思考着这样的一个问题,Java中的对象是如何在各个方法,或者网络中流转的呢?通过这个问题便引出了我们今天的主人公:序列化与反序列化!......
  • IBM java的分析工具(ga和ha)学习和整理
    IBMjava的分析工具(ga和ha)学习和整理背景前几天学习了整理了jca工具今天继续学习一下ga工具ga工具主要是分析gclog相关.可以很直观的进行gclog的分析和展示.除了mat之外还有一个比较轻量级的内存dump分析工具ha.想着一起学习和分析一下.ga工具的相关学习下载:https......
  • 用Java语言实现一个观察者模式
    观察者模式(也被称为发布/订阅模式),提供了避免组件之间紧密耦合的另一种方法,它将观察者和被观察的对象分开。在该模式中,一个对象通过添加一个方法(该方法允许另一个对象,即观察者注册自己)使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。这些观察者收到消......
  • 深入了解Java中的ArrayList
    Java中的ArrayList是一个常用的动态数组类,它提供了便捷的操作方法和灵活的大小调整能力。在本篇博客中,我们将深入了解ArrayList的特性、常见用法和一些注意事项。ArrayList概述:ArrayList是Java集合框架中的一个类,它实现了List接口,并继承了AbstractList类。它基于数组实现,可以动......
  • [职场] 面试题:Java语言技术的应用有哪些?
    小伙伴们面试时,特别是和代码相关的岗位,面试时可能会遇见关于Java语言技术的应用这个问题,那么我们应该如何作答呢?一起来看看答案吧!答案:1、Android,应用许多的Android,应用都是Java程序员开发者开发。虽然Androidi运用了不同的JVMl以及不同的封装方式,但是代码还是用Java语言所编写。......
  • JavaScript 实现点击爱心效果
    可放在网页任何位置,以下是代码:<script>(function(e,t){functionr(){s=s.filter((e)=>{e.alpha<=0?(t.body.removeChild(e.el),e=null):(e.y--,e.scale+=.004,e.alpha-=.013,e.el.style.cssText=`left:${e.x}px;top:${e.y}px;opac......
  • JavaScript 实现浏览器级别的弹窗提示
    可放在网页任何位置,以下是代码:1.每次打开都会弹出提示<script>//在页面加载时触发警告框window.onload=function(){alert('这是浏览器级别的弹窗提示!');};</script> 2.打开只弹出一次,刷新网页不会弹出,清理浏览器缓存会再次弹出<script>/......
  • Java常见容器类总结,实际应用场景归纳
    前言大家好,我是chowley,今天来总结一下Java中的常见容器类,和他们对应的使用场景。在Java中,容器类是一组用于存储和操作对象的类库,它们有着了不同的数据结构和实现原理,以满足开发过程中各种需求。本文将总结Java中常见的容器类,并通过实际应用场景进行归纳,帮助大家更好地理解和选择......