首页 > 编程语言 >Java冒泡排序

Java冒泡排序

时间:2022-10-05 20:45:39浏览次数:57  
标签:Java int 元素 冒泡排序 flag 循环 array 比较

public class ArrayDome7 {

    /*
        冒泡拍寻是最为出名的排序算法之一,总共又八大paixu
        冒泡排序的代码是:两层循环,外层冒泡轮数,里层依次比较
        时间复杂度为O(n2)
        如何优化呢?
            优化想法1:如果原数组中存在相同的数字就不需要比较了
           那么可以少比较一次
     */

    public static void main(String[] args) {

        int[] a = {123,345,234,576,23,4646};
        int[] b = sort(a);
        System.out.println(Arrays.toString(b));

    }

    public static int[] sort(int[] array){
        /*
            1、比较数组中相邻的两个元素,如果二者有大小则交换
            2、每一次比较,都会比较出最大或者最小,那么下一轮可以少比较一次
            3、依次循环,直到结束

         */

        //用来存放数据元素的临时变量
        int temp = 0;

        //外层循环,判断一个数组总共要比较大小多少次
        for (int i = 0; i < array.length-1; i++) {

            boolean flag = false;//通过标志控制循环

            //内层循环,判断上一次比较完还需要比较多少次
            for (int j = 0; j < array.length-1-i; j++) {
                //比较数据元素的大小,如果后一个数比前一个大 则交换位置
                if (array[j+1]>array[j]){
                    temp = array[j+1];
                    array[j+1] = array[j];
                    array[j] = temp;
                    flag = true; //当两个元素进行了比较 那么两个元素不相同 为真
                }
            }
            if(flag==false){ //如果两个元素相同就不会进行上面的比较 flag的值不变
                break; //结束本次循环
            }
        }
        return array;
    }


}

标签:Java,int,元素,冒泡排序,flag,循环,array,比较
From: https://www.cnblogs.com/onlyxue/p/16756305.html

相关文章

  • 常用的前端JavaScript方法封装
    [常用的前端JavaScript方法封装]1、输入一个值,返回其数据类型functiontype(para){returnObject.prototype.toString.call(para)}复制代码2、数组去重functio......
  • 力扣138(java)- 复制带随机指针的链表(中等)
    题目:给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由n个......
  • Java手写一个批量获取数据工具类
    1.背景偶尔会在公司的项目里看到这样的代码List<Info>infoList=newArrayList<Info>();if(infoidList.size()>100){intsize=infoidList.size();i......
  • Java学习 三大循环语句和switch语句
    Java学习三大循环语句和switch语句 while循环语句(当)只要布尔表达式为true,循环就回一直执行下去。**我们大多是情况会让循环停止下来的,我们需要一个让表达式时效......
  • Java第三讲动手动脑
    1以上代码无法通过编译主要是由于在Foo类中自定义了有参的构造函数,系统不在提供默认的构造函数(无参),而在上述的引用中并没有提供参数导致无法通过编译。 ......
  • Java了解知识点
    Java了解#编辑器java:idea(收费)、eclipse(免费)、MyEclipse(收费)#编译型语言java:一处编码,处处运行#java是编译型还是解释型?编译型#编译过程:......
  • 【java基础】接口和抽象类,static和final
    接口和抽象类接口:主要定义方法,让子类去实现,作为标准只有方法,方法都是public,修饰符都被省去没有构造器使用implement关键字继承只能定义静态常量抽象类:父类不实现......
  • java如何将字符串转换为json格式字符串呢?
    转自:http://www.java265.com/JavaJingYan/202206/16540828373607.htmlJSON简介:   JSON(JavaScriptObjectNotation,JS对象简谱)是一种轻量级的数据交换格式。它基......
  • 一篇文章让你彻底理解Java的单例设计模式
    下文是笔者编写的单例模式实现的八种方式,如下所示:单例模式的简介我们将一个类在当前进程中只有一个实例的这种模式,称之为“单例模式”那么Java代码如何实现一个单例模式呢?......
  • Java 中 Set 的4中遍历方式
    Set和List遍历方式基本一致,Set没有for的遍历方式主测试方法@Testpublicvoidtest(){Set<Integer>set=newHashSet<>();intn=100......