首页 > 编程语言 >秦疆的Java课程笔记:58 数组 冒泡排序

秦疆的Java课程笔记:58 数组 冒泡排序

时间:2023-12-05 15:59:30浏览次数:40  
标签:sort Java temp int 冒泡排序 秦疆 array public

  • 总共有八大排序,其中冒泡排序无疑是较为出名的排序算法之一。

  • 冒泡排序的代码相当简单,两层循环,外层冒泡轮数,里层依次比较。

  • 当看到嵌套循环,应该立马意识到,这个算法的时间复杂度是\(O(n^2)\)。

  • 冒泡排序基本步骤:

    • 比较数组中两个相邻元素,如果第一个数比第二个数大,就交换位置。
    • 每一次比较,产生出一个最大,或者最小的数字。
    • 下一轮就可以少一次排序。
    • 依次循环,直到结束。
public class ArrayDemo7 {  
    public static void main(String[] args) {  
        int[] a = {989,21354,566,12,3336,41,1,0};  
        int[] sort = sort(a);  
        System.out.println(Arrays.toString(sort));  
    }  
  
    public static int[] sort(int[] array){  
        //临时变量;  
        int temp = 0;  
        //外层循环,判断要循环多少次  
        for (int i = 0; i < array.length - 1; i++) {  
            //内层循环,判断两个数,如果第一个数比第二个数大,则交换位置  
            for (int j = 0; j < array.length-1-i; j++) {  
                if (array[j+1] < array[j]) {  
                    temp = array[j];  
                    array[j] = array[j+1];  
                    array[j+1] = temp;  
                }  
            }  
        }  
        return array;  
    }  
}
====效果如下====
[0, 1, 12, 41, 566, 989, 3336, 21354]
  • 思考:如何优化?
  • 通过flag标志减少没有意义的比较
public static int[] sort(int[] array){  
    int temp = 0;  
    boolean flag = false;  
    for (int i = 0; i < array.length - 1; i++) {  
        for (int j = 0; j < array.length-1-i; j++) {  
            if (array[j+1] < array[j]) {  
                temp = array[j];  
                array[j] = array[j+1];  
                array[j+1] = temp;  
                flag = true;  
            }  
        }  
        if (flag == false) {  
            break;  
        }  
    }  
    return array;  
}

标签:sort,Java,temp,int,冒泡排序,秦疆,array,public
From: https://www.cnblogs.com/Acolyte/p/17877436.html

相关文章

  • 秦疆的Java课程笔记:59 数组 稀疏数组
    当一个数组中大部分元素都是0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模publicclassArrayDemo1{publicstaticv......
  • Java面试高频八股文
    一、Java基础(一)1.面向对象和面向过程的区别面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题;面向对象会先抽象出对象,然后用对象执行方法的方式解决问题;面向对象开发的程序一般更易维护、易复用、易扩展;    2.基本类型与包装类①Java中的几种......
  • 秦疆的Java课程笔记:56 数组 二维数组
    多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。秦疆老师表示Java中并不太使用二维以上的多维数组。例如二维数组:inta[][]=newint[2][5],就可以看成是一个两行五列的数组publicclassArrayDemo1{publicstaticv......
  • java通过springboot开发生成二维码
    1、添加依赖<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version><!--请使用最新版本--></dependency>2、编写代码@T......
  • 智慧校园云平台,Java智慧校园信息管理平台源码
    智慧班牌是数字化智慧校园建设不断发展的产物,是教育信息化改革的部分体现。它包含以往班牌优点的同时,还综合考虑教改及学校各方面的需求,加入了更多的实用功能,比如:显示班级及教室基础信息、当前日期和时间、以及由传感器采集的实时数据,同时显示多端平台数据同步,具有多样性的交互功能......
  • java字符串 加上n个"|--",与过滤处理
    /******original,左边扩充n个"-"*@paramn*@paramoriginal*@return*/privateStringfullStr(intn,Stringoriginal){StringBuildersb=newStringBuilder();for(inti=0;i<n;i++){......
  • JS(JavaScript)
    1.介绍:JavaScript语言主要是完成页面的数据验证,因此运行在客户端,需运用浏览器来解析执行JavaScript代码。ECMAScript是JS的一个标准。 一个完整的JS是由ECMAScript,DOM(文档对象模型),Bom(浏览器对象模型)组成的。 JS是弱类型(类型可变)Java是强类型。......
  • java基础语法-pageage-构造方法-继承-多态
    java中的包-package包:包中有很多的类,根据类的功能不同,我们可以创建不同的包。包的主要功能:包的主要功能:用于分类管理包的基本语法package包的路径路径与路径之间使用点隔开:package.fatherlujing.sonlujing在一个文件中,可以没有包,或者一个包。但是不能出现两个包。......
  • 基于Java的毕业设计选题管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利代码参考源码获取前言......
  • 基于Java的医院药品管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利代码参考源码获取前言......