java中的经典算法:冒泡排序算法

$. 可以理解成当你静止一杯可乐时,里面的CO2随着你的静止,由于不不易溶于水的性质,

    且会以气泡的形式逐渐向上漂浮。越大的气泡上浮速度越快。

冒泡排序算法的原理于此相似。 每次进行相邻值之间的替换;

    大的值(元素)排在小的值(元素)前面  ,或者小的值(元素) 排在大的值(元素)前面。

import java.util.Arrays;

/*
* 冒泡排序算法
* */
public class BubbleSort { public static void main(String[] args) { int[] arr = {1, 35, 64, 24, 7, 6, 8, 46, 3, 34}; //定义10个数
for (int i = 0; i < arr.length - 1; i++) { //控制多少次循环
System.out.println("循环次数:"+i);
for (int j = 0; j < arr.length - i - 1; j++) {//每进行一次循环排序的次数
if (arr[j] > arr[j + 1]) { //替换
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
System.out.println("排序次数:"+ j);
}
}
for (int num:arr){
System.out.println(Arrays.asList(num)); //采用集合的方式更直观的看结果
} }
}

外层for控制着循环次数,内层for控制每次循环所需要的排序次数。

共进行8次循环,每次排序的次数以此递减。

    第九次因为只有一个元素无需排序,所以直接输出结果。所以只存在8次循环排序。

    每循环一次排序当前相邻数大小关系。

 if (arr[j] > arr[j + 1]) {     //替换
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}

  使用temp相当于一个中介寄存。

传递方式如下:

在冒泡排序中,相邻大的元素(小的元素)替换小的元素(大的元素)。

下图为第一次排序的一个步骤。

arr[0] < arr[1]不做变化

arr[1] < arr[2]:不做变化

arr[2] > arr[3]:替换

替换后的当前arr[2] = 24  arr[3] = 64

arr[3] > arr[4] : 替换

替换后的arr[3] = 7  arr[4] = 64

以此类推,大的值(元素)往前调,小的值(元素)往后调。

当循环到最后一次时,只有一个数,所以最后一次不需要循环, 所以

i < arr.length - 1

每循环一次一次进行排序时总是去除上次最后一个值,所以

j < arr.length - i - 1

冒泡排序算法 :BubbleSort的更多相关文章

  1. c#-冒泡排序-算法

    冒泡排序(Bubble Sort) 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后 ...

  2. 快速、冒泡排序算法(PHP版)

    1.冒泡排序算法改进: 方法一: function bubbleSort($arr){//$arr(1...n)是待排序的文件,采用自下向上扫描,对$arr做冒泡排序 $bFlag = true; / ...

  3. PHP实现冒泡排序、双向冒泡排序算法

    冒泡排序(Bubble Sort),是一种较简单的.稳定的排序算法.冒泡排序算法步骤:比较相邻的元素,如果第一个比第二个大,就交换他们两个的位置:对每对相邻的元素执行同样的操作,这样一趟下来,最后的元 ...

  4. 【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

  5. 冒泡排序算法的C++实现

    直接上代码: #include <iostream> using namespace std; void BubbleSort(int arr[],int n){ ) //在本例中,第1次 ...

  6. 用 Java 实现一个冒泡排序算法

    冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如 ...

  7. c#冒泡排序算法和快速排序算法

    依次比较相邻的两个数,将小数放在前面,大数放在后面. 第1趟: 首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放 ...

  8. 基于Java实现的冒泡排序算法

    冒泡排序是一种简单基础的排序算法,相信在大学课堂里老师已经讲过了,现在我基于Java来实现一遍. 简述 冒泡排序正如其关键词一样,杂乱的气泡经过浮动,最后大的气泡飘到了上面而小的气泡在下面,无序的元素 ...

  9. 冒泡排序算法和简单选择排序算法的js实现

    之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(d ...

随机推荐

  1. Eclipse 常用插件地址大全

    安装方式: 使用Eclipse 的自动升级功能,菜单栏选[ Help ]→[ install new Software]  点击[Add]按钮,在“ Name ”中填入“ name (填写一个自己喜欢 ...

  2. U盘安装centos7.1出现dracut问题的超简单解决方法

    恰好今天有空,于是抽空回忆一下之前U盘安装CENTOS7时遇到的一个大坑.U盘装系统习惯了,就顺手用大白菜工具刻了一个CentOS 7.1的minimun ISO镜像到U盘,于是噩梦开始了.如果有人像 ...

  3. 【309】◀▶ Windows 相关功能实现

    目录: 共享文件夹失败的解决方法 导 栅 添 1. 共享文件夹失败的解决方法 参考:解决“你没有权限访问,请与网络管理员联系” 参考:WIN7局域网文件共享设置方法 2. 导 在 3. 栅 栅 4. ...

  4. shell编程——流控制case和select

    在shell编程里有时候需要出现交换界面,让使用者来选择要执行的功能,如下面所示,这时候就需要用到case和select进行配合 请选择功能: 1) 退出 2) 系统升级 3) 防火墙配置 4) to ...

  5. windows系统mysql-5.7.19官方绿色版zip包安装教程

    环境: 系统环境 Windows 10 64位 mysql版本 5.7.19 一.万变不离的下载 下载页面:https://dev.mysql.com/downloads/mysql/ 点击 Down ...

  6. RPM简介与基本使用

    一.什么是RPM RPM的全名是Red Hat Package Manager,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:在Fedora .Redhat.Man ...

  7. Java 8特性

    1. Java8的新特性 1.1. Lambda表达式和函数式接口 最简单的Lambda表达式可以用逗号分隔的参数列表.->符号和功能语句块来表示.示例如下: Arrays.asList( &q ...

  8. hadoop错误:Does not contain a valid host:port authority

    hadoop环境部署完,执行hdfs zkfc -formatZK命令时,提示如上图所示错误 错误内容: [root@study_1_1 hadoop]# hdfs zkfc -formatZK Ex ...

  9. Texstudio

    Texstudio快捷键:Ctrl+T,选中之后按这个可以快速注释

  10. AngularJs(v1)相关知识和经验的碎片化记录

    1.利用angular指令监听ng-repeat渲染完成后执行脚本 http://www.cnblogs.com/wangmeijian/p/5141266.html 2.$http的POST请求中请 ...