思想:
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。
至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
用二重循环实现,外循环变量设为i,内循环变量设为j。假如有10个数需要进行排序,则外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i,j的值依次为1,2,...10-i。
 代码:
public static void main(String[] args) {
int[] i = {1001,596,403,39,23,12,9,6,5,4,3,1};
bubbleSort(i);
}
private static void show(int[] x) {
for (int i:x) {
System.out.print(i + " ");
}
System.out.println();
}
public static void bubbleSort(int[] a) {
int temp;
show(a);
for (int i = a.length - 1;i > 0;i--) {
System.out.println("----------Round " + (a.length - i) + "-----------");
for (int j = 0;j < i;j++) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
show(a);
}
}
}
结果:
1001 596 403 39 23 12 9 6 5 4 3 1
----------Round 1-----------
596 1001 403 39 23 12 9 6 5 4 3 1
596 403 1001 39 23 12 9 6 5 4 3 1
596 403 39 1001 23 12 9 6 5 4 3 1
596 403 39 23 1001 12 9 6 5 4 3 1
596 403 39 23 12 1001 9 6 5 4 3 1
596 403 39 23 12 9 1001 6 5 4 3 1
596 403 39 23 12 9 6 1001 5 4 3 1
596 403 39 23 12 9 6 5 1001 4 3 1
596 403 39 23 12 9 6 5 4 1001 3 1
596 403 39 23 12 9 6 5 4 3 1001 1
596 403 39 23 12 9 6 5 4 3 1 1001
----------Round 2-----------
403 596 39 23 12 9 6 5 4 3 1 1001
403 39 596 23 12 9 6 5 4 3 1 1001
403 39 23 596 12 9 6 5 4 3 1 1001
403 39 23 12 596 9 6 5 4 3 1 1001
403 39 23 12 9 596 6 5 4 3 1 1001
403 39 23 12 9 6 596 5 4 3 1 1001
403 39 23 12 9 6 5 596 4 3 1 1001
403 39 23 12 9 6 5 4 596 3 1 1001
403 39 23 12 9 6 5 4 3 596 1 1001
403 39 23 12 9 6 5 4 3 1 596 1001
----------Round 3-----------
39 403 23 12 9 6 5 4 3 1 596 1001
39 23 403 12 9 6 5 4 3 1 596 1001
39 23 12 403 9 6 5 4 3 1 596 1001
39 23 12 9 403 6 5 4 3 1 596 1001
39 23 12 9 6 403 5 4 3 1 596 1001
39 23 12 9 6 5 403 4 3 1 596 1001
39 23 12 9 6 5 4 403 3 1 596 1001
39 23 12 9 6 5 4 3 403 1 596 1001
39 23 12 9 6 5 4 3 1 403 596 1001
----------Round 4-----------
23 39 12 9 6 5 4 3 1 403 596 1001
23 12 39 9 6 5 4 3 1 403 596 1001
23 12 9 39 6 5 4 3 1 403 596 1001
23 12 9 6 39 5 4 3 1 403 596 1001
23 12 9 6 5 39 4 3 1 403 596 1001
23 12 9 6 5 4 39 3 1 403 596 1001
23 12 9 6 5 4 3 39 1 403 596 1001
23 12 9 6 5 4 3 1 39 403 596 1001
----------Round 5-----------
12 23 9 6 5 4 3 1 39 403 596 1001
12 9 23 6 5 4 3 1 39 403 596 1001
12 9 6 23 5 4 3 1 39 403 596 1001
12 9 6 5 23 4 3 1 39 403 596 1001
12 9 6 5 4 23 3 1 39 403 596 1001
12 9 6 5 4 3 23 1 39 403 596 1001
12 9 6 5 4 3 1 23 39 403 596 1001
----------Round 6-----------
9 12 6 5 4 3 1 23 39 403 596 1001
9 6 12 5 4 3 1 23 39 403 596 1001
9 6 5 12 4 3 1 23 39 403 596 1001
9 6 5 4 12 3 1 23 39 403 596 1001
9 6 5 4 3 12 1 23 39 403 596 1001
9 6 5 4 3 1 12 23 39 403 596 1001
----------Round 7-----------
6 9 5 4 3 1 12 23 39 403 596 1001
6 5 9 4 3 1 12 23 39 403 596 1001
6 5 4 9 3 1 12 23 39 403 596 1001
6 5 4 3 9 1 12 23 39 403 596 1001
6 5 4 3 1 9 12 23 39 403 596 1001
----------Round 8-----------
5 6 4 3 1 9 12 23 39 403 596 1001
5 4 6 3 1 9 12 23 39 403 596 1001
5 4 3 6 1 9 12 23 39 403 596 1001
5 4 3 1 6 9 12 23 39 403 596 1001
----------Round 9-----------
4 5 3 1 6 9 12 23 39 403 596 1001
4 3 5 1 6 9 12 23 39 403 596 1001
4 3 1 5 6 9 12 23 39 403 596 1001
----------Round 10-----------
3 4 1 5 6 9 12 23 39 403 596 1001
3 1 4 5 6 9 12 23 39 403 596 1001
----------Round 11-----------
1 3 4 5 6 9 12 23 39 403 596 1001
最新内容请见作者的GitHub页:http://qaseven.github.io/

Java算法-冒泡排序相关推荐

  1. java冒泡排序_冒泡排序不会写,怎么当程序员?细说经典java算法——冒泡排序...

    话说小猿昨天在校友群里,听到有人被问到冒泡排序,然后就没有然后了....其实,冒泡算法还是很基础的,第一次出现是在大二上半学期的课本上.索性咱们今天就说说冒泡排序是啥东西,编码应该怎么实现? 冒泡排序 ...

  2. java算法—冒泡排序

    冒泡排序算法是排序算法里面基础算法之一,理解简单,编程难度小,但是初学比较难,我把自己的心得写下来,希望可以帮到初学者!下面通过一个例子来看一下: 冒泡排序;对一组整数从小到大进行排序 首先先定义一个 ...

  3. Java算法--冒泡排序

    package com.zhangxueliang;/*** 冒泡排序*/ public class BubbleSort {public static void main(String[] args ...

  4. java算法:冒泡排序

    java算法:冒泡排序 冒泡排序:不断遍历文件,交换倒序的相邻元素,直到文件排好顺序.冒泡排序的主要优点是容易实现,冒泡排序通常会比选择排序.插入排序慢. 如,对EXAMPLE 字母进行排序:  E  ...

  5. Java | 用Java实现冒泡排序算法

    冒泡排序算法 冒泡排序算法思路:(以从小到大为例) 从第一个元素开始,相邻的两个元素比较,若前者比后面的大,则两者交换顺序: 一次比较后,从第二个元素开始,相邻的仍遵循大者后移的规律完成一轮遍历: 一 ...

  6. java 数组冒泡排序、转置(降序)

    1.java 数组冒泡排序 排序的基本原理(升序): 原始数据:  2 .1 .9 .0 .5 .3 .7 .6 .8: 第一次排序: 1  .2 .0 .5 .3 .7 .6 .8 .9 : 第二次 ...

  7. 排序算法——冒泡排序(Bubble Sort)

    排序算法--冒泡排序(Bubble Sort) 算法简介(Introduction) Bubble sort is to compare adjacent elements of the list a ...

  8. java算法----排序----(6)希尔排序(最小增量排序)

    1 package log; 2 3 public class Test4 { 4 5 /** 6 * java算法---希尔排序(最小增量排序) 7 * 8 * @param args 9 */ 1 ...

  9. 希尔排序的java算法_Java算法系列篇 【希尔排序】

    什么? 搞Java不会算法? 由于个人兴趣原因以及工作所需,最近了解Java算法的相关案例 及时分享 感兴趣的欢迎交流 希尔排序 描述: 基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直 ...

  10. 冒泡排序出现的问题_停课不停学 | 有趣的算法——冒泡排序

    停课不停学 有趣的算法--冒泡排序 01 生活中处处都有算法 每个人每天都会用到一些算法,算法也是人类使用计算机解决问题的技巧之一,但是算法并不是仅仅用于计算机领域中,包括在数学.物理甚至是每天的生活 ...

最新文章

  1. 让系统命令man汉化
  2. Oracle 数据库查看具有sysdba系统权限用户,设置、重置sys用户密码
  3. python 批量创建线程_【Python】批量创建线程
  4. 前端学习(1874)vue之电商管理系统电商系统之修改element-ui组件的按需导入
  5. linux 针对目录空间配额,linux磁盘配额quota
  6. 除了默认的docker0网桥,启动Docker服务怎么指定使用的网桥
  7. recyclerview放不同的布局_RecyclerView系列之(2):为RecyclerView添加分隔线
  8. 深入理解Scala 标识符,命名和域
  9. matlab 矩形窗汉明窗幅频特性对比
  10. ad15图层显示_AD15视图配置窗口太大点击不了确定怎么设置?
  11. matlab autocad选哪个,cad哪个版本最好用,如何选择?
  12. JAVA Swing万年历
  13. 从菜鸟到大神之自动化测试(基础一)
  14. 微信公众号起名字攻略:怎么给公众号取名字?
  15. CHM [CHM 电子书 文件格式 定义规范]
  16. 转载:分布式Session共享:tomcat+memcached实现session共享
  17. java cos90,Java Math.cosh() 方法
  18. S参数的应用|从S参数看通道阻抗匹配 | 理解插入损耗
  19. 计算机网络与英语教学,计算机网络技术在大学英语教学的运用
  20. 计算机学院毕业礼物,“风里雨里,我们在这里等你“计算机学院举行毕业礼物赠予仪式...

热门文章

  1. winform ComboBox基本操作
  2. PHP根据开始、结束时间:计算开始、结束时间占当月总天数的百分比
  3. mysql查询时间段内数据
  4. mysql视图子查询_MySQL:FROM子句限制中的带有子查询的视图
  5. idea配置java和maven_Maven配置,使用IntelliJ IDEA和Maven创建Java Web项目
  6. mod_signalwire.c:371 Curl Result 1, Error: Protocol https not supported
  7. Error:Module production: java.lang.NoClassDefFoundError: com/android/resources/ResourceFolderType
  8. LINUX doubango编译详细过程记录
  9. 游竹林寺不得,谈封山收费
  10. eclipse中如何搜索带\的字串