6.7 冒泡排序

6.7 冒泡排序

  • 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!

  • 冒泡排序的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知

  • 我们看到嵌套循环,英爱立马就可以得出这个算法的时间复杂度为O( n 2 n^2 n2)

    package com.baidu.www.array;import java.util.Arrays;public class ArrayDemo07 {public static void main(String[] args) {int[] a = {1,123,435,231,245,64,23,65,1234,6421,30,387};System.out.println(Arrays.toString(a));sort(a);System.out.println(Arrays.toString(a));/** int[] sort =sort(a);* System.out.println(Arrays.toString(a));* */}//冒泡排序//1、比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置//2、每一次比较,都会产生出一个最大,或者最小的数字//3、下一轮则可以少一次排序//4、依次循环,直到结束!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;}
    }
    /*
    * [1, 123, 435, 231, 245, 64, 23, 65, 1234, 6421, 30, 387]
    [6421, 1234, 435, 387, 245, 231, 123, 65, 64, 30, 23, 1]Process finished with exit code 0*/
    
  • 在这里我们还要思考一个问题,如果输入的数组本身就已经排好序了,但是排序算法还是要重新的进行比较,如此以来就造成了算法的浪费,为了解决这个问题,我们可以尝试引入一个判断来减少程序运行,可以在外层定义一个变量这是一个优化的思路。

    package com.baidu.www.array;import java.util.Arrays;public class ArrayDemo07 {public static void main(String[] args) {int[] a = {1,123,435,231,245,64,23,65,1234,6421,30,387};System.out.println(Arrays.toString(a));sort(a);System.out.println(Arrays.toString(a));/** int[] sort =sort(a);* System.out.println(Arrays.toString(a));* */}//冒泡排序//1、比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置//2、每一次比较,都会产生出一个最大,或者最小的数字//3、下一轮则可以少一次排序//4、依次循环,直到结束!public static int[] sort(int[] array){//定义一个临时变量用于交换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];array[j]=array[j+1];array[j+1]=temp;flag = true;}}if (flag==false){break;}}return array;}
    }
    /*
    * [1, 123, 435, 231, 245, 64, 23, 65, 1234, 6421, 30, 387]
    [6421, 1234, 435, 387, 245, 231, 123, 65, 64, 30, 23, 1]Process finished with exit code 0*/
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/18311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql入门基础-2

Dml语句 对数据的增删改查 关键字 Insert增 Update删 Delete改 添加数据 给指定字段添加数据 Insert into 表明 (字段名1&#xff0c;字段名2) values&#xff08;值1&#xff0c;值2&#xff09;; 给全部字段添加数据--(根据位置对应添加到字段下) Insert into 表名 values…

基于ESP8266+网络调试助手点灯实验

文章目录 ESP8266串口wifi模块简介实验准备硬件接线程序下载注意事项总结 ESP8266串口wifi模块 简介 ESP8266 是一种低成本、高性能的 Wi-Fi 模块&#xff0c;内置了 TCP/IP 协议栈&#xff0c;它可以作为单独的无线网络控制器&#xff0c;或者与其他微控制器进行串口通信。它…

mongotop跟踪Mongodb集合读取和写入数据

版本控制 从 MongoDB 4.4 开始&#xff0c;MongoDB 数据库工具现在与 MongoDB 服务器分开发布&#xff0c;并使用自己的版本控制&#xff0c;初始版本为100.0.0. 此前&#xff0c;这些工具与 MongoDB 服务器一起发布&#xff0c;并使用匹配的版本控制。 兼容性 mongotop 版本…

STM SPI学习

SPI介绍 SPI&#xff1a;串行外设设备接口&#xff08;Serial Peripheral Interface&#xff09;&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步通信总线。 IIC总线与SPI总线对比 全双工&#xff1a;同一时刻既能接收数据&#xff0c;也能发送数据。 CS&…

中国最赚钱公司出炉

7月25日&#xff0c;2023年《财富》中国500强排行榜正式发布。国家电网以5300亿美元的营收位居榜首&#xff0c;中国石油和中国石化分列第二和第三。工商银行则成为最赚钱的公司。 图片来源&#xff1a;财富FORTUNE 1中国500强TOP10 数据显示&#xff0c;今年500家上榜的中国…

自然语言处理(NLP)技术

自然语言处理技术是一种人工智能技术&#xff0c;它的目标是使计算机能够理解、分析、处理和生成自然语言&#xff08;人类使用的语言&#xff09;。NLP技术包括文本分类、情感分析、机器翻译、语音识别、语音合成、信息检索、信息抽取、问答系统等。NLP技术的应用非常广泛&…

Linux 用户和权限

一、root 用户 root 用户(超级管理员) 无论是windows、Macos、Linux均采用多用户的管理模式进行权限管理。在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root (超级管理员)。 root用户拥有最大的系统操作权限&#xff0c;而普通用户在许多地方的权限是受限的。…

Keepalived 在CentOS 7安装并配置监听MySQL双主

keepalived安装 MySQL双主配置请看这里&#xff1a;https://tongyao.blog.csdn.net/article/details/132016200?spm1001.2014.3001.5502 128、129两台服务器安装步骤相同&#xff0c;配置文件不同&#xff0c;下面有介绍。 1.安装相关依赖包&#xff0c;并下载keepalived安…

Mybatis分页的实现 及PageHelper的使用

目录 一.分页的原理 二.Mybatis实现 三.PageHelper 第⼀步&#xff1a;引⼊依赖 第⼆步&#xff1a;在mybatis-config.xml⽂件中配置插件 第三步&#xff1a;编写Java代码 一.分页的原理 pageindex 页数 pagindex 页内数据 (pageindex-1)*pagesize,pagesize SELECT * FRO…

Java课题笔记~ MyBatis入门

一、ORM框架 当今企业级应用的开发环境中&#xff0c;对象和关系数据是业务实体的两种表现形式。业务实体在内存中表现为对象&#xff0c;在数据库中变现为关系数据。当采用面向对象的方法编写程序时&#xff0c;一旦需要访问数据库&#xff0c;就需要回到关系数据的访问方式&…

Django Rest_Framework(一)

1. Web应用模式 在开发Web应用中&#xff0c;有两种应用模式&#xff1a; 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。] 前后端分离【把前端的界面效果(html&#xff0c;css&#xff0c;js分离到另一个服务端或另一个目录下&#xff0c;python服务…

Redis的键空间监听功能

文章目录 Redis 键空间通知一、keyspace介绍二、事件通知配置三、不同命令生成的事件四、客户端测试五、Springboot整合Redis键空间监听5.1 方式一5.2 方式二 Redis 键空间通知 一、keyspace介绍 keyspace&#xff08;键空间通知&#xff09;针对指定key发生的一切改动&#…

Stable Diffusion AI绘画初学者指南【概述、云端环境搭建】

概述、云端环境搭建 Stable Diffusion 是什么、能干啥&#xff1f; 是一种基于深度学习的图像处理技术&#xff0c;可以生成高质量的图像。它可以在不需要真实图像的情况下&#xff0c;通过文字描述来生成逼真的图像。 可以对图像进行修复、超分辨率转换&#xff0c;将低分辨…

<Maven>项目依赖导入Maven本地仓库命令

项目工程pom.xml文件打开&#xff1a;查看报错的依赖, 将jar包放在D盘(或者其它路径都可)根目录下,在windows黑窗口执行以下命令; 举例&#xff1a;jar包名称&#xff1a; 1.api-1.0-SNAPSHOT102.jar 2.coms-cache-1.0-SNAPSHOT.jar 命令&#xff1a; mvn install:install-fi…

Scratch 游戏传统导路算法

1 深度优先算法&#xff08;DFS&#xff09; 这个算法不是最短路算法&#xff0c;只是一个基本的搜索算法&#xff0c;但是可以得出图中是否能找到指定节点 大致的思路&#xff1a; 从起始节点开始&#xff0c;将其标记为已访问。 检查当前节点的相邻节点中是否存在未访问的节…

【计算机网络】传输层协议 -- TCP协议

文章目录 1. TCP协议的引入2. TCP协议的特点3. TCP协议格式3.1 序号与确认序号3.2 发送缓冲区与接收缓冲区3.3 窗口大小3.4 六个标志位 4. 确认应答机制5. 超时重传机制6. 连接管理机制6.1 三次握手6.2 四次挥手 7. 流量控制8. 滑动窗口9. 拥塞控制10. 延迟应答11. 捎带应答12.…

【Spring】Spring之依赖注入源码解析

1 Spring注入方式 1.1 手动注入 xml中定义Bean&#xff0c;程序员手动给某个属性赋值。 set方式注入 <bean name"userService" class"com.firechou.service.UserService"><property name"orderService" ref"orderService"…

数据库访问中间件--springdata-jpa的基本使用

二、单表SQL操作-使用关键字拼凑方法 回顾 public interface UserRepository extends JpaRepository<User,Integer> {User findByUsernameLike(String username); }GetMapping("/user/username/{username}")public Object findUserByUsername(PathVariable S…

【CSS】视频文字特效

效果展示 index.html <!DOCTYPE html> <html><head><title> Document </title><link type"text/css" rel"styleSheet" href"index.css" /></head><body><div class"container"&g…