冒泡排序:

据说是八大排序中的其一,通俗的意思就是讲,在一组数据中,相邻元素依次比较大小,最大的放后面,最小的冒上来

我这里简单画了一个图,不算流程,但里面有分析过程

1、确定第1个数的位置:依次与其它数据相比:

  --第1次和2相比,比2大,则右移1位到2的位置上, 这时候,1在2位置上了

  --再与3相比,如果比3大,再向右移1位到3的位置上,不大则不用移动,这时候1在3位置上

  --再与4相比,如果比4大,再向右移动1位到4的位置上,不大则不用移动,这时候1在4位置上

  --再与5相比,如果比5大,再向右移动1位到5的位置上,不大则不用移动,这时候1在5位置上

  经过以上一轮4次的比较,我们可以确定1的位置。

下图是流程图:

2、确定第2个数的位置:依次与除1以外的其它数据相比(因为第1轮比较1的时候,已经比过了,已经确定了1的位置,所以这以后都没必要再跟1比了):

  --第1次和3相比,比3大,则右移1位到3的位置上, 这时候,2在3位置上了,不大则不用移动

  --再与4相比,如果比4大,再向右移1位到4的位置上,这时候2在4位置上,不大则不用移动

  --再与5相比,如果比5大,再向右移动1位到5的位置上,这时候1在5位置上,不大则不用移动

  经过以上一轮3次的比较,我们可以确定2的位置。

3、确定第3个数的位置:依次与除1、2以外的其它数据相比(因为第1轮、第2轮比较1、2的时候,已经比过了,已经确定了1、2的位置,所以这以后都没必要再跟1、2比了):

  --第1次和4相比,比4大,则右移1位到4的位置上, 这时候,3在4位置上了,不大则不用移动

  --再与5相比,如果比5大,再向右移1位到5的位置上,这时候2在5位置上,不大则不用移动

  经过以上一轮2次的比较,我们可以确定3的位置。

4、确定第4个数的位置:依次与除1、2、3以外的其它数据相比(因为第1轮、第2轮、第3轮比较1、2、3的时候,已经比过了,已经确定了1、2、3的位置,所以这以后都没必要再跟1、2、3比了):

  --第1次和5相比,比5大,则右移1位到5的位置上, 这时候,4在5位置上了,不大则不用移动

  经过以上一轮1次的比较,我们可以确定4的位置。

5、最后的5不用再比较了,因为已经确定了其它剩下的位置,第一轮都有与5比较过,所以其它4个坑占了后,剩下的5你还有啥选择呢。已经被固定了

以上我只过第1轮的时候的图,让大家能了解一下站队的一个大体情况,近而来分析,那么接下来,我们来分析一下,如何用程序实现这个逻辑:

1、首先我们就定5个数吧,那么我们可以把这5个数放在一个数组里。int[] nums={23,12,34,2,67}或int[] nums=new int[]{23,12,34,2,67},这里怎么用:开心就好!

2、要进行4轮的比较才能确定,这一定是个循环,固定次数的,我们用for吧。for(int i=0;i<4;i++),当然你用for(int i=1;i<=4;i++)也行,不过数组是从0开始的,所以习惯i从0开始,这样也有利于看直接:数组[i],不然还每次得:数组[i-1]。4也就是:数组.length-1

3、每一轮里面要循环不同次数比较数据确定位置,那么在第2步循环中,要再有一个循环,这是多重循环,也叫潜逃循环

这个for循环,我们也要来分析一下,它的范围:

第几轮(我们定的是变量i)            (内层循环)次 变量j

1      对应数组下标i是0            4        外层循环第1次,内层需要循环4次 =5-i-1

     2      对应数组下标i是1          3        外层循环第2次,内层需要循环3次  =5-i-1

       3      对应数组下标i是2            2        外层循环第3次,内层需要循环2次  =5-i-1

     4      对应数组下标i是3            1        外层循环第4次,内层需要循环1次  =5-i-1

内层for循环,我们设置变量j,for(int j=0;j< ;j++),j<这个值,要找出来

双重循环的原理是:外层循环1次,内层循环1轮(遍历),上表已经很清晰的标示出了j每轮循环里面要执行的次数,但因为我们是i是从0开始的,所以j的范围应该是5-i-1,也就是:数组.length-1-i

4、在内层循环中还有一个条件,即前一位比后一位大的话,进行挪位,不大则不变位置,如果涉及挪位的时候,我们需要一个变量来倒腾一下交换要挪位的2个值。

通过以上分析:啊,恍然大悟~~~

package com.cn.u4;/*** @author Administrator冒泡排序,升序*/
public class SortNum {public static void main(String[] args) {//定义数组,我这里用简单的语法定义int[] nums={23,12,34,2,67};//进行几轮比较,确定几个位置for(int i=0;i<nums.length-1;i++){for(int j=0;j<nums.length-1-i;j++){if(nums[j]>nums[j+1]){int tmp=nums[j+1];nums[j+1]=nums[j];nums[j]=tmp;}}      System.out.print("第"+(i+1)+"次排序后的结果:");              for(int k=0;k<nums.length;k++){                  System.out.print(nums[k]+" ");              }System.out.println("");}System.out.println("冒泡后的数组=");for(int num:nums){System.out.print(num+" ");}}
}

结果输出:

这个东西,我纠结了三天,今天五一,出去看楼去了,参观了别人家的山体别野,尼玛,回来就开窍了。总结:人生,需要刺激!

经典冒泡排序-由低到高相关推荐

  1. mysql排序由低到高_MySQL入门系列(四)—— 排序查询

    一.排序查询 语法 SELECT 查询列表 FROM 表 [WHERE 筛选条件] ORDER BY 排序列表 [ASC] 一般ORDER BY语句放在查询语句的最后[LIMIT子句除外] 案例 案例 ...

  2. php点击价格_按价格从高到低排序和从低到高排序_可点击切换,WooCommerce 教程:[解决] 排序,航运成本 – 从低到高...

    客户端在购物车页面上有多个运费评级,通过他们的 API 从 FedEx,USPS,UPS 和类似的插件自动生成.问题是,他想按价格排序,而不是由供应商分组. 最终结果:按价格排序的运费 在 WooCo ...

  3. 计算机系统由低到高分层,下列选项列出计算机系统由低到高分层顺序中.doc

    下列选项列出的计算机系统由低到高分层顺序中,正确的是____B____. A.硬件-应用软件-操作系统-其他系统软件 B.硬件-操作系统-其他系统软件-应用软件 C.硬件-其他系统软件-操作系统-应用 ...

  4. c语言学习之结构篇代码演示样例-输入n个同学的姓名,数学英语成绩,依照平均分从低到高排序并输出...

    #include<stdio.h> void main(){ const int count = 5;//定义数量 struct student{ char name[80]; float ...

  5. 从键盘中读入最多不超过50个学生的学生信息(包括空格隔开的姓名、学号、年龄信息,以学号从低到高排序)

    [输入形式] 每次键盘读入最多不超过50个学生的学生信息: 第一行为学生人数: 后面每一行为空格隔开的学生学号.姓名.年龄,其中学号和年龄都是整数. [输出形式] 分别以姓名顺序(从低到高)和年龄顺序 ...

  6. 转: 现代英军陆军军衔超低到高用英文怎么说

    现代英军陆军军衔超低到高用英文怎么说 转自: zhidao.baidu.com/question/35528706.html Army 陆军 General of the Army 五星上将 (usa ...

  7. [Mysql]数据库创建严谨度:由低到高

    Mysql 建库语句 数据库创建严谨度:由低到高 模板: 数据库创建严谨度:由低到高 create database 数据库名; create database if not exists 数据库名; ...

  8. 面试经典情景题:高并发解决方案

    面试经典情景题:高并发解决方案 情景模拟:在很多个用户同时访问网站的时候,例如:抢购或者双十一的时候.如何避免服务器宕机或者数据库挂掉的问题,请你提供几种解决方案. 1.静态资源与后台服务进行分离 静 ...

  9. mysql工资由低到高语句_mysql面试题

    1.根据部门号从高到低,工资从低到高列出员工的信息 select * from employee order by dept_id desc,salary 2.union和union all的区别 用 ...

最新文章

  1. 「Java基本功」一文读懂Java内部类的用法和原理
  2. Mycat分库分表核心技术分析
  3. GitHub中的奇葩项目:登顶过趋势榜的女装大佬项目
  4. Android Studio 新建drawable-hdpi、drawable-mdpi等
  5. 学python最重要的是_Python学习,要选哪个版本?
  6. js面向对象2--原型
  7. XML简介和使用AFNetworking解析XML案例
  8. 女儿是程序员爸爸的小棉袄,礼物太暖心
  9. 25 个超棒的 HTML5 JavaScript 游戏引擎开发库
  10. 201521123014 《Java程序设计》第7周学习总结
  11. python 多继承冲突_python:super()对多继承的影响
  12. 教你如何用C语言做一个简单的贪吃蛇
  13. 计算机组装与维护试题精选,《计算机组装与维护》精选试题及答案
  14. QNX支持的BSP包QNX os supported board(ARM+MIPS+POWERPC+X86)
  15. 比亚乔-截至2020年5月,全球两轮车销量同比下降21%
  16. linux编程学习路线,秘辛:2019上半年程序员生存报告
  17. 自动化开发cmd封装:
  18. TensorFlow笔记(7) 多神经元分类
  19. 怎么找电脑服务器文档,电脑服务器地址怎么找
  20. 孟岩:算力是新数字经济的支点,去中心化网络资产规模将达10万亿美元

热门文章

  1. python3 列表相关操作
  2. nignx处理Html中SSI技术代码注意事项
  3. python中正则表达式的默认匹配方式为_Python模式匹配与正则表达式
  4. java 十进制 左移,java移位运算符之十进制转二进制
  5. java 等待唤醒机制,Java线程等待唤醒机制
  6. android安装python opencv_Python、C++、Android OpenCV 开发环境的配置
  7. android提示程序正在执行,Android中获取正在运行的进程(一)
  8. linux c fifo阻塞写和非阻塞写,linux—FIFO的使用与非阻塞标志(O_NONBLOCK)的影响
  9. java service层 事务_Java高并发秒时啊API之Service层1
  10. python3转码python2_python2写的代码移植到python3后无法转码成中文文本,请大神指教,谢谢~...