冒泡排序

代码实现

package com.atguigu.sort;import java.util.Arrays;/*** @author WHT* @create 2021-06-15 11:15*/
public class BubbleSort {public static void main(String[] args) {int arr[] = {3, 9, -1, 10, -2};System.out.printf("排序前的数组:");System.out.println(Arrays.toString(arr));for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {// 如果前面的数比后面的数大,则交换。if (arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}System.out.printf("第%d趟排序后的数组:", i + 1);System.out.println(Arrays.toString(arr));}}
}

运行结果

D:\java\jdk-11.0.11\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2020.1.1\lib\idea_rt.jar=9740:D:\IntelliJ IDEA 2020.1.1\bin" -Dfile.encoding=UTF-8 -classpath E:\WHT\Project\Java\DataStructures\out\production\DataStructures com.atguigu.sort.BubbleSort
排序前的数组:[3, 9, -1, 10, -2]
第1趟排序后的数组:[3, -1, 9, -2, 10]
第2趟排序后的数组:[-1, 3, -2, 9, 10]
第3趟排序后的数组:[-1, -2, 3, 9, 10]
第4趟排序后的数组:[-2, -1, 3, 9, 10]Process finished with exit code 0

优化的冒泡排序

代码实现

package com.atguigu.sort;import java.util.Arrays;/*** @author WHT* @create 2021-06-15 11:15*/
public class BubbleSort {public static void main(String[] args) {int arr[] = {3, 9, -1, 10, 20};System.out.printf("排序前的数组:");System.out.println(Arrays.toString(arr));for (int i = 0; i < arr.length - 1; i++) {boolean flag = false;   // 标识变量,表示是否进行过交换。(不一样的地方)for (int j = 0; j < arr.length - 1 - i; j++) {// 如果前面的数比后面的数大,则交换。if (arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;flag = true;}}System.out.printf("第%d趟排序后的数组:", i + 1);System.out.println(Arrays.toString(arr));// 在这趟排序中,一次交换都没有发生过。(不一样的地方)if (!flag) {break;}}}
}

运行结果

D:\java\jdk-11.0.11\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2020.1.1\lib\idea_rt.jar=10243:D:\IntelliJ IDEA 2020.1.1\bin" -Dfile.encoding=UTF-8 -classpath E:\WHT\Project\Java\DataStructures\out\production\DataStructures com.atguigu.sort.BubbleSort
排序前的数组:[3, 9, -1, 10, 20]
第1趟排序后的数组:[3, -1, 9, 10, 20]
第2趟排序后的数组:[-1, 3, 9, 10, 20]
第3趟排序后的数组:[-1, 3, 9, 10, 20]Process finished with exit code 0

封装的冒泡排序

// 将前面的冒泡排序算法,封装成一个方法。public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {boolean flag = false;   // 标识变量,表示是否进行过交换。(不一样的地方)for (int j = 0; j < arr.length - 1 - i; j++) {// 如果前面的数比后面的数大,则交换。if (arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;flag = true;}}// 在这趟排序中,一次交换都没有发生过。(不一样的地方)if (!flag) {break;}}}

8万随机数测试:17s 。

尚硅谷Java数据结构与算法——054 冒泡排序相关推荐

  1. 用数组实现环形队列(尚硅谷Java数据结构与算法)

    整个代码在文章最后面,gitee地址:java数据结构与算法: 自己学习与练习数据结构的仓库https://gitee.com/ALi_L/javaDataStructurs.git 环形队列的难点如 ...

  2. Java 数据结构与算法 (尚硅谷Java数据结构与算法)笔记目录

    红色的表示重要,绿色的表示暂时还不懂而且很重要 线性结构和非线性结构 队列 顺序队列 循环队列 链表 链表(Linked List)介绍 链表是有序的列表,但是它在内存中是存储如下 小结: 1) 链表 ...

  3. 刚从阿里、头条面试回来,尚硅谷java数据结构与算法百度云

    二.回顾整理阿里面试题 基本就这样了,还有一些零星的问题想不起来了,答案也整理出来了. 自我介绍 JVM如何加载一个类的过程,双亲委派模型中有哪些方法? HashMap如何实现的? HashMap和C ...

  4. 尚硅谷java数据结构与算法 韩顺平 数组实现队列问题

    day2学习打卡:数组实现循环队列 package queue;import java.util.Scanner; //这里没有使用循环队列的思想所以造成了数组空间的浪费(数组空间不能复用) publ ...

  5. 尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业01

    尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业第一题 要求: 1)在前面的基础上,将稀疏数组保存到磁盘上,比如map.data 2) 恢复原来的数组时,读取map.data进行恢复 ...

  6. 尚硅谷01 数据结构与算法_数据结构与算法介绍+稀疏数组

    数据结构与算法的关系 几个实际编程中遇到的问题 要想写出优秀的算法,首先应该能读懂别人写好的算法. 将生活中遇到的实际问题,使用程序来解决 线性结构和非线性结构 线性结构和非线性结构的关系: 数据结构 ...

  7. 尚硅谷Java数据结构与java算法 全194章笔记整理

    前言 视频地址:https://www.bilibili.com/video/BV1E4411H73v?from=search&seid=13120683720695451628 评价:整个教 ...

  8. Java数据结构与算法学习 目前30170字

    文章借鉴于[尚硅谷]数据结构与算法(Java数据结构与算法),在内容方面会做更改,但是核心依然是他们的学习视频.在这里声明. 1. 线性结构和非线性结构 1.1 线性结构 数据结构包括两大部分,一个叫 ...

  9. Java 数据结构与算法系列之冒泡排序

    一.前言 相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法. ...

最新文章

  1. 程序员的认知-中国程序员为什么跳槽
  2. layui数据表格自定义复选框表头_layui中table表头样式修改方法
  3. 阿里P7架构师谈职业生涯规划,给遇到瓶颈,迷茫期的人群一些建议
  4. java外键实体类_java – 在Embeddable类中的外键映射
  5. 什么是低信噪比图像及处理方法
  6. sersync实时备份安装及设置
  7. 嵌入式 c 中结构体经常碰到_I、 __O 、__IO是什么意思?
  8. Python入门:Dataframe的索引模式
  9. 数据分析(2)——假设检验的详细原理步骤
  10. UVA - 10105 Polynomial Coefficients
  11. opencv将RGB转成YIQ
  12. 1ppi等于多少dpi_Android开发之显示篇(弄懂ppi、dpi、pt、px、dp、dip、sp之间的关系只需这一篇)...
  13. 华为平板计算机的隐藏功能,华为平板MatePad的3种隐藏玩法,你都不知道呢
  14. C语言的运算符和表达式
  15. mysql查询出现毫秒值快速解决方法
  16. 全国最强计算机的大学排名,全国高校计算机学科实力最新排名,这19所高校最受认可!...
  17. java 盲水印_GitHub - Yxiaojian/BlindWaterMark: Java盲水印
  18. 2015年3月13日
  19. 20220323有道云笔记如何收藏文章和剪报功能
  20. 图片裁剪并上传,电脑手机均实用

热门文章

  1. chrome 中解除 360doc 禁止复制
  2. 服务器与家用电脑的比较
  3. ListView控件绑定数据
  4. rar 爆破 windows_宁夏招聘 | 转正后月薪4K+!宁夏天宏爆破有限公司招聘!
  5. 喝茶让你降三高之“桑玉茶”
  6. VC 比拼 Delphi(1)!
  7. uniapp使用uni.createInnerAudioContext()实现在app 小程序 h5有声书的倍速功能
  8. 新生儿信息管理系统在线帮助
  9. Android进度条ProgressBar颜色的渐变设置
  10. 年度公司 | 百家客户、300%增速、上千开发者,PingCAP想要拓展更赚钱的国际市场...