冒泡排序

冒泡排序实际上就是进行 a.length 轮循环,每轮会将最大的元素放到右边(已经排好元素的左边)。

由于冒泡排序比较简单,不多说了,展示下示例与代码即可。

下面以数列{20,40,30,10,60,50}为例,演示它的冒泡排序过程(如下图)。

package com.yusael.sortTest;import java.util.Random;public class BubbleSort {/*** 交换元素* */public static void exchange(Comparable[] a, int m, int n){Comparable temp = a[m];a[m] = a[n];a[n] = temp;}/*** 比较大小* */public static boolean less(Comparable m, Comparable n){return m.compareTo(n) < 0;}/*** 展示元素* */public static void show(Comparable[] a){for (int i = 0 ; i < a.length ; i++){System.out.print(a[i] + " ");}System.out.println();}/*** 是否排序成功* */public static boolean isSorted(Comparable[] a){for (int i = 1 ; i < a.length ; i++){if (less(a[i], a[i-1]))return false;}return true;}/*** 冒泡排序算法* */public static void sort(Comparable[] a){for (int i = 0 ; i < a.length ; i++){for (int j = 0 ; j < a.length-i-1 ; j++){if (less(a[j+1], a[j]))exchange(a, j, j+1);}}}}

测试案例:

public static void main(String[] args) {Comparable[] a = new Comparable[50];for (int i = 0 ; i<a.length ;i++){a[i] = new Random().nextInt(200);}System.out.println("排序前:");show(a);sort(a);System.out.println("排序后:");show(a);System.out.println(isSorted(a));
}
排序前:
160 179 117 16 79 122 198 5 17 58 88 150 107 100 172 68 156 159 8 72 10 185 165 98 124 39 67 142 189 62 129 125 43 155 65 120 19 153 170 41 79 143 146 82 29 71 33 141 92 107
冒泡排序:
5 8 10 16 17 19 29 33 39 41 43 58 62 65 67 68 71 72 79 79 82 88 92 98 100 107 107 117 120 122 124 125 129 141 142 143 146 150 153 155 156 159 160 165 170 172 179 185 189 198
是否排序成功:true

《Algorithms》Comparable 实现冒泡排序相关推荐

  1. 《Algorithms》Comparable 实现排序大全

    各种排序 这篇文章是将所有排序写到了一起..方便复习. 各个排序的单独介绍戳下面: 选择排序 插入排序 冒泡排序 希尔排序 归并排序 快速排序 慢慢补全... 各排序算法时间比较(代码) public ...

  2. 《Algorithms》Comparable 实现希尔排序

    希尔排序 希尔排序介绍 希尔排序图文说明 希尔排序的时间复杂度和稳定性 希尔排序时间复杂度 希尔排序稳定性 希尔排序实现 希尔排序介绍 希尔排序其实是改进版的插入排序,我们先回忆一下插入排序,插入排序 ...

  3. Java中的冒泡排序,Comparator接口和Comparable接口的简单使用

    冒泡排序 冒泡排序是一种常见的排序方法,按照一定的规则(比如从小到大或者从大到小的顺序)对一组数据进行排序.而在Java开发中,也经常用到冒泡排序.我们就以下面的一个例子来讲解冒泡排序算法. 给定一个 ...

  4. 简介------Comparable接口介绍及冒泡排序

    简单排序 在程序中,排序是常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则排序. 在java的开发工具包jdk中,已经给我们提供了很多数据结构与算法的实现,比如List,Set,Map, ...

  5. 《Algorithms》Comparable 实现快速排序三向切分的快速排序

    快速排序 快速排序的切分 完整的快速排序 三向切分的快速排序(快排的改进版) 快速排序是目前使用最广泛的排序,同时也是目前最快的排序,它也体现了分治的思想:将数组分成两部分,并分别独立地进行排序,和归 ...

  6. 《Algorithms》Comparable 实现归并排序

    Comparable 实现归并排序 原地归并的抽象方法 自上而下的归并排序 从下往上的归并排序 参考文章的地址:http://www.cnblogs.com/skywang12345/p/360236 ...

  7. 《Algorithms》Comparable 实现插入排序

    插入排序 插入排序介绍 插入排序图文介绍 插入排序的时间复杂度和稳定性 插入排序时间复杂度 接插入排序稳定性 插入排序实现 插入排序介绍 插入排序基本思想是:把 n 个待排序的元素看成为一个有序表和一 ...

  8. 《Algorithms》Comparable 实现选择排序

    选择排序 选择排序介绍 选择排序图文 选择排序的时间复杂度和稳定性 选择排序时间复杂度 选择排序稳定性 选择排序实现 代码中涉及到 Comparable 的部分将会在别的文章单独介绍. 选择排序介绍 ...

  9. 排序算法(一) 冒泡排序

    2019独角兽企业重金招聘Python工程师标准>>> 最近想着怎么也要弄点东西来开个源什么的,顺便也梳理一下工作以来的一些知识点.就从算法开始,最常使用的就是各类排序算法了. 第一 ...

最新文章

  1. Turing渲染着色器网格技术分析
  2. golang println与printf区别
  3. python 遍历元组例子_【Python入门自学笔记专辑】——元组的创建、访问、遍历...
  4. 分组[测试点分支+二分图判定]
  5. urllib库parse模块的使用
  6. kotlin读取sd卡里的文件_如何在Kotlin中写入文件?
  7. 两千字揭密 MySQL 8.0.19 三大索引新功能:隐藏索引,降序索引,函数索引
  8. mac自带自动化java_java Mac自动化-java和ant环境搭建
  9. oracle12C 创建用户学习
  10. mysql对库授权alter_mysql 权限 alter update insert
  11. 打造自己的linux桌面,一步一步打造你自己的Ubuntu 10.04桌面
  12. 切比雪夫多项式c语言csdn,切比雪夫多项式(Chebyshev polynomials)
  13. keepalived高可用
  14. 阿里根据截图查到泄露者,这样的技术是如何做到的?
  15. 北大元培学院数学与计算机,通识教育试验的尴尬 北京大学元培学院近距离观察...
  16. MEX and Increments-(先拿一些的贪心思维)
  17. vs开发工具必备插件
  18. 良知的清醒常常意味着糟糕的记忆力的标志。
  19. qiankun微前端主子应用通信方案
  20. 转jacob操作word和excel

热门文章

  1. We want to do better without being distracted
  2. QFileInfoList
  3. ubuntu编译libid3tag库报错问题解决
  4. sql聚集索引和非聚集索引_SQL Server中非聚集索引概述
  5. sql server调试_使用SQL Server扩展事件来调试应用程序
  6. bpe编码_缓冲池扩展(BPE)–缓冲池简介
  7. ssis 表达式任务_SSIS表达式任务与将变量作为表达式求值
  8. 使用PowerShell和SQL的示例可用性监视服务的插图
  9. 未能找到存储过程sp__sp_WhoIsActive存储过程概述
  10. Javascript获取For循环所用时间