public class test1 {

public static void main(String[] args) {
  // 冒泡排序
  int[] arr = { 10, 2, 34, 5, 12, 8, 43 };
  for (int i = 0; i < arr.length; i++) {
   for (int j = 0; j < arr.length - 1 - i; j++) {
    if (arr[j] > arr[j + 1]) { // 如果后一个数小于前一个数交换
     int tmp = arr[j];
     arr[j] = arr[j + 1];
     arr[j + 1] = tmp;
    }
   }
  }
       for(int n = 0;n<arr.length;n++)
       {
        System.out.println(arr[n]);
       }
 }

}

第一趟循环比较之后的结果

10   2     34   5    12   8    43
2    10    5    12   8    34   43

冒泡排序的过程很简单,就是将第一个记录的关键字和第二个记录的关键字进行比较,如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。比完一趟,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较。

所以代码可以解释为:要最终排序必须循环arr.length次,而每一次循环都是两两比较,好比第一次循环(此时i=0)10和2比较,10比2大交换位置;然后10再跟34比较,34大,交换位置;然后34再跟5比较,34大,交换位置;然后34再跟12比较,34大,交换位置;然后34再跟8比较,还是34大,交换位置;最后34跟43比较,43大,不交换位置,所以最后第一次循环结束,接下来就是第二趟循环,第二趟循环就剩下arr.length-1-i(此时的i就等于1,所以就剩下5个数的循环),这就是为什么arr.length的外层for循环里要嵌套arr.length-i-1次循环.

java实现冒泡排序 (2012-05-23 10:18:22)相关推荐

  1. 日志10.24整合项目文档并运行+周报10.18~22工作总结

    日志10.24整合项目文档并运行 一. 安装pnpm,更新代码与远程同步,启动后端itms-server.前端itms-webapp项目 1.安装pnpm:已管理员身份运行命令行,跳转到前端文件夹it ...

  2. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...

  3. QT学习-10/18/2012

    1.QT-使QSplitter分割线不能移动:http://cooker.iteye.com/blog/733481 m_tableSplitter = new QSplitter(Qt::Horiz ...

  4. Java黑皮书课后题第10章:*10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数

    10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 题目 破题 代码 运行结果 题目 10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 破题 类似编程 ...

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

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

  6. Java随堂小记05

    Java随堂小记05 数组 数组的常见异常 三种数组的初始化 数组的使用 二维数组 Arrays类 打印数组:Arrays.toString(变量名) 升序排序:Arrays.sort(arr) 冒泡 ...

  7. Java基础学习总结(23)——GUI编程

    2019独角兽企业重金招聘Python工程师标准>>> 一.AWT介绍 所有的可以显示出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Compo ...

  8. http://www.cnblogs.com/tornadomeet/archive/2012/05/24/2515980.html

    转载: Deep Learning(深度学习): ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一 ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰 ...

  9. kubeadm部署V1.23.10

    目录 一.集群规划 二.基础环境配置 1.配置/etc/hosts文件 2.设置主机名 3.安装yum源(Centos7) 4.必备工具安装 5.所有节点关闭firewalld .dnsmasq.se ...

最新文章

  1. android viewgroup 事件,android中viewgroup的事件传递分析
  2. 【Python学习系列二十一】pandas库基本操作
  3. android 编辑框带拖动,Android带输入框的对话框
  4. 阿里巴巴开源容器镜像加速技术
  5. python衍生特征
  6. 深度linux安装postgresql_在 Linux 上安装 PostgreSQL
  7. FFT快速傅立叶变换
  8. jquery datatable搜索框添加按钮,改变keypress搜索为点击按钮搜索
  9. [Kaggle] Spam/Ham Email Classification 垃圾邮件分类(spacy)
  10. usage: git remote add [options] name url -f, --fetch fetch the remote branches ...
  11. 关于联想安装linux系统后无法扫描出wifi网络问题解决方案
  12. 简易数字电路交通灯设计
  13. 【项目管理/PMP/PMBOK第六版/新考纲】纯干货!商业论证/效益管理计划/项目运行环境/组织过程资产/环境事业因素/组织系统,系列笔记建议收藏!
  14. 通过电脑重置解决小米笔记本巨卡无比的问题
  15. apiCloud + aui实现tab栏切换功能
  16. 在校生的实习经历怎么写
  17. 全国大学生软件测试大赛Web应用测试(二)Selenium功能测试环境配置
  18. PCL中3D点云特征描述与提取(三)
  19. Ubuntu安装hp打印机
  20. CCF_Java_201612-2_工资计算

热门文章

  1. 腾讯云服务器windows系统重装为Linux系统
  2. html标签手册 360doc,基于AJAX的文件上传控件NetAdvantage for jQuery
  3. 利用Jenkins+蒲公英平台显示二维码 部署Android打包踩过的坑
  4. linux下安装安装jdk和安装android studio
  5. 浮点运算单元FPU能给电机控制带来什么?
  6. 安装RedHat Linux 7.4
  7. 提供数据库连接池 和数据库连接
  8. 【MYSQL报错】ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry
  9. python特征选择relieff图像特征优选_基于Relief特征选择算法的研究与应用
  10. 计算机内存的安装方法,电脑内存条安装教程_电脑内存条安装注意事项