一、前言

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

带着这个好奇心,我去查了下资料,国内基本找不到使用 Java 写的数据结构与算法书籍,有一本书叫《Java 数据结构与算法》,这本书的代码是使用 Java 实现的,不过这本书是国内的学者翻译国外的书籍写出来的,个人感觉这本书对于初学者来说,还是比较难理解的。

冒泡排序一种运行效率很低的排序算法,然而虽然排序效率低,确实排序入门很重的算法,因为冒泡排序的思路是最简单最容易理解的排序算法了。

二、冒泡排序

1、定义: 冒泡排序是一种通过两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止的交换排序。

2、实现思想: 通过比较两两相邻记录的关键字,将第一个记录的关键字和第二个记录的关键字进行比较,如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。比完一个循环,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较。

下面以一群身高不等的学生为例,如下图所示:

  • 未排序的学生

  • 已排序的学生

  • 冒泡排序第一轮实现过程

三、冒泡排序的 Java 代码实现

1、冒泡排序实现算法:

BubbleSort.java

package BubbleSort;/**** 冒泡排序实现算法**/
public class BubbleSort {public void bubble(Integer[] data){for(int i=0;i<data.length;i++){for(int j=0;j<data.length-1-i;j++){//如果后一个数小于前一个数,则两个数互相交换位置if(data[j]>data[j+1]){int tmp=data[j];data[j]=data[j+1];data[j+1]=tmp;}}}}
}

2、冒泡排序测试:

Test.java

package BubbleSort;import java.util.Arrays;/**** 测试冒泡排序**/
public class Test {public static void main(String[] args) {Integer[] list={149,138,165,197,176,113,127,114,110};//冒泡排序BubbleSort bs = new BubbleSort();bs.bubble(list);System.out.println("排序前的结果为:" + Arrays.toString(list));System.out.print("排序后的结果为:");for(int i=0;i<list.length;i++){System.out.print(list[i]+" ");}}
}

2、测试结果:


关注微信公众号compassblog,了解更多

Java 数据结构与算法系列之冒泡排序相关推荐

  1. 【Java 数据结构及算法实战】系列 017:HJ3 明明的随机数

    描述 明明生成了N个1到500之间的随机整数.请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出. 数据范围: 1≤n≤1000 ,输入 ...

  2. 【Java数据结构及算法实战】系列002:算法的四种描述方式

    本节是<Java数据结构及算法实战>系列的第2节,主要介绍描述算法的常用的4种方式. 要定义一个算法,我们可以用自然语言.流程图.伪代码的方式描述解决某个问题的过程或是编写一段程序来实现这 ...

  3. Java数据结构和算法(一)——简介

    本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子. 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱.一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数 ...

  4. 数据结构排序算法实验报告_[数据结构与算法系列]排序算法(二)

    我的上一篇文章向大家介绍了排序算法中的冒泡排序.插入排序和选择排序.它们都是平均时间复杂度为 O(n^2) 的排序算法,同时还为大家讲解了什么是原地排序和什么是排序的稳定性.下图是这三种算法的比较,不 ...

  5. 【笔记】Java数据结构与算法

    [笔记]Java数据结构与算法 文章目录 [笔记]Java数据结构与算法 1.八大排序应用场景 2.未完待续-- 1.八大排序应用场景 冒泡排序:优化后的冒泡排序可用于当数据已经基本有序,且数据量较小 ...

  6. 书籍推荐:《Java数据结构与算法》

    Data Structures and Algorithms in Java (2nd Edition) 没错,这本书的代码都是用Java写的. 现在市面上关于数据结构和算法的书的描述语言一般是C.C ...

  7. Java数据结构与算法(二)

    Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...

  8. Java数据结构和算法(第二版)

    Java数据结构和算法(第二版) 下载地址 https://pan.baidu.com/s/112D5houIgu0eMs_i5o0Ujw 扫码下面二维码关注公众号回复 100066获取分享码 本书目 ...

  9. Java数据结构和算法 - 递归

    三角数字 Q: 什么是三角数字? A: 据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,--中有一种奇特的联系.这个数列中的第N项是由第N-1项加N得到的 ...

最新文章

  1. HashMap、HashTable、ConcurrentHashMap、HashSet区别 线程安全类
  2. Android插件化原理解析——Hook机制之动态代理
  3. java advance_JavaAdvance
  4. Windows组策略完善主机安全整改实战(1)
  5. 根据相机内参进行图像去畸变
  6. c++ 静态变量赋值_Python变量及常量解释说明
  7. win7禁用其他软件只启用自定义软件的方法
  8. Overview of ISA and TMG Networking and ISA Networking Case Study (Part 2)
  9. 逻辑回归分类python实例_Python逻辑回归原理及实际案例应用
  10. LabVIEW查找范例的使用举例
  11. 如何做客户分析?客户分析的内容有哪些?
  12. october php,关于Laravel之October的安装配置过程
  13. JS 数组方法 splice 完全解读
  14. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第4章:LISTS
  15. linux持续测试ip端口延迟,Linux下使用nping测试TCP\UDP延迟
  16. Postgresql学习笔记之——SQL 执行计划
  17. 无光驱安装redhat企业版
  18. 采用CAD刀模插件(飞狼刀模工具箱)批理倒圆角
  19. 计量经济学及Stata应用 第五章习题 5.7 使用回归模型进行餐馆选址。数据集Woody3.dta包含33家Woody‘s连锁餐馆的以下变量……
  20. Linux磁盘与分区命名:sda, sdb, sdc, sda1, sda2

热门文章

  1. 一套图 搞懂“时间复杂度”
  2. 2019年11个值得研究的Javascript机器学习库
  3. 全职奶爸的一年深度学习之路:从零基础到成为研究科学家
  4. 阿里发布2019十大科技趋势:AI依然最热
  5. SAP MM 盘点流程中上不了台面却很实用的方案建议
  6. SAP MM Overall Level 审批的采购申请中行项目里的成本中心必须是同一个!
  7. 科普丨可拓学,诞生于中国的人工智能的理论基础之一
  8. Cell Reports:黄梓芮等揭示大脑皮层中通往意识的“大门”
  9. 解读自动驾驶的2020:从硬件角度看,无人车商业化落地难在哪?
  10. 世界半导体集成电路发展史(超细、超全)