冒泡排序是所有排序算法中最基本、最简单的一种。思想就是交换排序,通过比较和交换相邻的数据来达到排序的目的。
  具体流程如下:
  1、对要排序的数组中的数据,依次比较相邻的两个数据的大小。
  2、如果前面的数据大于后面的数据,就把这两个数据进行交换。这样一轮比较和交换过后,就把最小的数据放在数组的最前面;
  3、按照上述比较和交换的方法,把剩下的数据再进行相同操作,最后,便可按照从小到大的顺序对数组完成排序。
  假如有初始数据:25  11  45  26  12  78。
  1、第一轮排序,从数组的头部开始进行比较。首先是 25 和 11 比较,25 大,将数据 11 向前移一位。同理,比较 25 和 45, 后一个即 45 大,位置不动。再比较45 和 26,前一个数大,所以 45 后移一位。第一轮排序后,顺序为:[11, 25, 26, 12, 45, 78]。
  2、第二轮排序,从数组的头部开始进行比较。首先是 11 和 25 比较,由于前面的数小,所以位置不动。比较25 和 26 ,由于前面的数小,所以位置不动。第二轮排序后,顺序为:[11, 25, 12, 26, 45, 78]。
  3、第三轮排序,从数组的头部开始进行比较。首先是 11 和 25 比较,由于前面的数小,所以位置不动。比较 25 和 12,由于前面的数大,所以位置互换。第三轮排序后,顺序为:[11, 12, 25, 26, 45, 78]。
  ......
  4、最后一轮排序后,顺序为:[11, 12, 25, 26, 45, 78]
 
  java 代码实现为:(https://github.com/xbk417/algorithm
 public int[] sort(int[] arr) {
int tmp;
for(int i = 1; i < arr.length; i++) {
// 判断相邻两个数据的大小,并把较大的数往后冒泡
for(int j = 0; j < arr.length - 1; j++) {
if(arr[j] > arr[j+1]) {
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
System.out.println(i + ":" + Arrays.toString(arr));
}
return arr;
}

常用算法Java实现之冒泡排序的更多相关文章

  1. 排序算法Java实现(冒泡排序)

    算法描述:对于给定的n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行一轮比较和交换后,n个记录中的最大记录将位于第n位:然后对前(n-1)个记录进行 ...

  2. 常用算法Java实现之快速排序

    快速排序和冒泡排序相似,都是通过多次比较和交换来实现排序. 具体流程如下: 1.首先设定一个分界值,通过分界值将数组分成左右两部分,将大于等于分界值的数据交换集中到右侧数组,将小于分界值的数据交换集中 ...

  3. 常用算法Java实现之选择排序

    选择排序算法在每一步中选取最小值来重新排序,通过选择和交换来实现排序. 具体流程如下: 1.首先从原数组中选择最小的1个数据,将其置于第一个位置. 2.然后从剩下的数据中再选择其中最小的一个数据,并将 ...

  4. 常用算法Java实现之希尔排序

    希尔排序严格来说是基于插入排序的思想,又被称为缩小增量排序. 具体流程如下: 1.将包含n个元素的数组,分成n/2个数组序列,第一个数据和第n/2+1个数据为一对... 2.对每对数据进行比较和交换, ...

  5. 常用算法Java实现之直接插入排序

    直接插入排序是将未排序的数据插入至已排好序序列的合适位置. 具体流程如下: 1.首先比较数组的前两个数据,并排序: 2.比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置: 3.比较第四 ...

  6. 常用算法之排序(Java)

    一.常用算法(Java实现) 1.选择排序(初级算法) 原理:有N个数据则外循环就遍历N次并进行N次交换.内循环实现将外循环当前的索引i元素与索引大于i的所有元素进行比较找到最小元素索引,然后外循环进 ...

  7. 【Java】-NO.13.Algorithm.1.Java Algorithm.1.001-【Java 常用算法手册 】-

    1.0.0 Summary Tittle:[Java]-NO.13.Algorithm.1.Java Algorithm.1.001-[Java 常用算法手册 ]- Style:Java Series ...

  8. 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题

    常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...

  9. 八大排序算法Java

    目录(?)[-] 概述 插入排序直接插入排序Straight Insertion Sort 插入排序希尔排序Shells Sort 选择排序简单选择排序Simple Selection Sort 选择 ...

随机推荐

  1. 搭建 Redis 的主从

    主从概念 ⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强⼤的多级服务器集群架构 master用来写数据,slave用来读数据,经统计:网站的读写比率 ...

  2. 针对jquery的ajax中的参数理解

    1. url 发送请求的地址.为空表示当前页. $.ajax({ type: "post", data: studentInfo, contentType: "appli ...

  3. python中mysql主从同步配置的方法

    1)安装mysql ubuntu中安装一台mysql了,docker安装另外一台mysql 获取mysql的镜像,主从同步尽量保证多台mysql的版本相同,我的ubuntu中存在的mysql是5.7. ...

  4. usb之鼠标作为按键输入

    1. 首先搞清楚,鼠标点左键.右键等能得到什么数据,然后分析这些数据上报事件即可. 第一个基本点:usb_alloc_urb函数,创建一个struct urb结构体,只能使用这个函数来创建,它是urb ...

  5. consonant_爆破音

    consonant_爆破音_[p]和[b].[t]和[d].[k]和[g] 声带震动:发音的重要作用. 爆破音:发音在一瞬间,不会延长气流. [p]:声带不震动,嘴唇咬在一起,有明显的气流.map.p ...

  6. jxls-2.x导出excel入门——基本操作

    之前随笔使用的是1.x的比较古老的版本了,已经不再维护,接下来使用较新的2.x的版本进行导出 之前一直按照其他的博客与官网的随笔进行导出,发现一直报错,后面更换了POI的版本为3.16(因为jxls也 ...

  7. 无偏方差为什么除以n-1

    设样本均值为,样本方差为,总体均值为,总体方差为,那么样本方差有如下公式:. 很多人可能都会有疑问,为什么要除以n-1,而不是n,但是翻阅资料,发现很多都是交代到,如果除以n,对样本方差的估计不是无偏 ...

  8. Web服务器、Web容器、Application服务器、反向代理服务器的区别与联系

    在Web开发中,经常会听到Web服务器(Web Server).Web容器(Web Container).应用服务器(Application Server).反向代理服务器(Reverse Proxy ...

  9. LWM2M的DISCOVER操作

    1. 先看下DISCOVER的数据流,工作服务器下发的指令到设备客户端 2. 解释,这个操作是用来发现Object, Object Instances, and Resources的属性,同时可以发现 ...

  10. HashMap在并发场景下踩过的坑

    本文来自网易云社区 作者:张伟 关于HashMap在并发场景下的问题有很多人,很多公司遇到过!也很多人总结过,我们很多时候都认为这样都坑距离自己很远,自己一定不会掉入这样都坑.可是我们随时都有就遇到了 ...