原理:将相邻元素的较大值赋给右边

思路:① 1.将集合或数组内的第一个元素与第二个元素进行比较,较大值赋给右边;

    2.将第二个元素与第三个元素进行比较,较大值赋给右边;

    .......

    (N-1).将第N-1个元素与第N个元素进行比较,较大值赋给右边;

    自此,得到集合中元素最大值并将其赋给元素N;

   ② 重复操作① 得到元素N-1的新值;得到元素N-2的新值;

    ......

    得到元素2的值,得到元素1的值

实例:

为 Arr[5] = {3,5,2,8,1}排序:

第一趟排序:

3,5,2,8,1;

3,2,5,8,1;

3,2,5,8,1;

3,2,5,1,8;

第二趟排序:

2,3,5,1,8;

2,3,5,1,8;

2,3,1,5,8;

第三趟排序:

2,3,1,5,8;

2,1,3,5,8;

第四趟排序:

1,2,3,5,8;

由此可见:N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,即:

for(i = 0; i<arr.length-1;i++){//外层控制进行多少趟排序

  for(j = 0; j<arr.length-1-i;j++){//内层控制每趟排序进行多少次相邻元素大小的判断

    if(arr[j]>arr[j+1]){

      temp = arr[j];

      arr[j] = arr[j+1];

      arr[j+1] = temp;

    }

  }

}

经典算法--冒泡排序(Java)的更多相关文章

  1. 经典算法冒泡排序java版

    写个冒泡排序吧 冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序. public class BubbleSort{ public int[] bubbleS ...

  2. 基本排序算法——冒泡排序java实现

    冒泡排序是原理最简单的一种排序算法,具体思想就不多说了,代码如下: eclipse4.3中编译通过 package sort.basic; import java.util.Arrays; publi ...

  3. 回顾C#经典算法冒泡排序

    冒泡算法的原理: 比较相邻的两个数字,如果第一个数字比第二个数字大,则交换它们位置 从开始第一对比较到结尾最后一对,最后一个数字就是最大数 除了最后一个数字,再次从开始第一对比较到最后一对,得出第二大 ...

  4. 排序算法----冒泡排序java(写得绝对比其他博文易懂明了实用)

    本来不想写的,看到别人写的都不符合自己心意 需进行n(n-1)/2次比较和记录移动,时间复杂度为O(n*n) import java.util.Arrays; import java.util.Sca ...

  5. 几个面试经典算法题Java解答

    题目一: public class testClockwiseOutput { //顺时针打印一个矩阵 @Test public void test(){ int[][] num = new int[ ...

  6. Java中的经典算法之冒泡排序(Bubble Sort)

    Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...

  7. Java经典算法四十例编程详解+程序实例

    JAVA经典算法40例 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   1.程 ...

  8. java经典算法40题-附带解决代码

    前一段时间工作比较闲,每天没有代码敲的日子有点无聊,于是为了保证自己的编程逻辑力的日常清醒,故百度了一些经典的java算法,然后自己思考编程解决问题,虽然那些东西比较基础了,但是有些题目小编看到了也是 ...

  9. 算法很美,听我讲完这些Java经典算法包你爱上她

    大家好,我是小羽. 对于编程来说的话,只有掌握了算法才是了解了编程的灵魂,算法对于新手来说的话,属实有点难度,但是以后想有更好的发展,得到更好的进阶的话,对算法进行系统的学习是重中之重的. 对于 Ja ...

随机推荐

  1. jedis spring集成

    jedis spring集成把jedis的核心对象交给spring管理.jedis核心对象:配置文件.连接池配置对象.连接池.集成方式有两种:spring-data-redis:自己封装 前提:要有一 ...

  2. java 内存分析之方法返回值二

    package Demo; class Point { private double x, y; public Point(double x, double y) { this.x = x; this ...

  3. java变量常量

    1. java 变量遵循先声明,再赋值,后使用的原则. 一个变量可以只声明,不赋值,没有问题(只是这个变量没有实际意义,但完全没有问题).但如果想要使用它,那么就一定要给它赋值,而大多数时候我们又不知 ...

  4. 带你从零学ReactNative开发跨平台App开发[react native SqlLite 终极运用](十二)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  5. Oracle常见等待事件

    1Buffer busy waits从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),但是导致这个现象的原因却有很多种.常见的两种是: ·         当一个会话视图 ...

  6. 关于easyUI一些标签的使用

    ①table: 1.class="easyui-datagrid":指定为easyUI的表格布局 2.pagination="true":带分页的表格 3.ro ...

  7. ORAchk-数据库健康检查好帮手

    ORAchk 之前被称为RACcheck,后来它的检查范围进行了扩展,改名为了ORAchk,它是在数据库系统进行健康检查的一个专用工具,这个工具主要用来检查软件的配置是否符合要求以及一些最佳实践是否被 ...

  8. Build path entry is missing: config 引起的 The project: configwhich is referenced by the classpath, does not exist.

    运行Junit的时候报错, The project: XXXX which is referenced by the classpath, does not exist. 在Java Build Pa ...

  9. 铁乐学python_day22_面向对象编程4

    以下内容大部分摘自博客http://www.cnblogs.com/Eva-J/ 封装 [封装]隐藏对象的属性和实现细节,仅对外提供公共访问方式. [好处] 将变化隔离: 便于使用: 提高复用性: 提 ...

  10. 触发器 视图 存储过程 mysql常用函数

                                                                                                        ...