排序:即使集合或数组中的元素有序化

本篇介绍最简单、最易掌握的冒泡排序

冒泡排序:

        是一种简单的排序算法, 冒泡排序就像学生站队一样,要在老师的引导下,以某位同学位基准,其他学生按身高的矮高次序排序

        以数组为例:它将一个数组中的两个元素进行比较,并将最小的元素交换到首位,,使数组中的元素成升序排列。从首位开始,取连续两个元素开始比较,两个元素中最小的会冒到前面,而较大的会沉到尾部,该过程将被重复执行,直到所有元素都被排序

图解过程     

   以数组a[5]={25,16,9,30,1}为例(数组可自行输入),如下图

以上每次比较相邻的两个元素,值小的交换到前面,每轮结束后,值最大都交换到了最后,第一轮需要四次,第二轮需要三次,第三轮需要两次,第四轮只需要一次。

        如果用双层循环遍历数组,外层循环控制比较多少轮,循环变量为i;内存循环需要控制每轮需要比较几次,循环变量为j;

结合上图可以得出i和j的范围(i和j都从0开始):i<N-1(N为数组的长度),j<N-1-i

用双重循环实现冒泡排序

public class DemoA {public static void pintArray(int[] a) {for (int i = 0; i < a.length; i++)System.out.print(a[i] + " ");}public static void main(String[] args) {int[] a = new int[] { 25, 16, 9, 30, 1 };System.out.println("排序之前的数组");pintArray(a);// 冒泡排序for (int i = 0; i < a.length - 1; i++) {for (int j = 0; j < a.length - 1 - i; j++) {if (a[j] > a[j + 1]) {int t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}System.out.println("\n排序之后的数组");pintArray(a);}
}

 运行结果

排序算法之冒泡排序(Java版)相关推荐

  1. 排序算法之冒泡排序(JAVA)

    //冒泡排序算法   平均时间复杂度   O(n*n)   稳定的排序算法 下面的是改进版的冒泡排序算法,使用exchange 标志位进行控制 public class bubbleSort { pu ...

  2. 排序算法---插入排序(java版)

    直接插入排序 原理 直接插入排序(Insertion Sort)的原理是:将数组中的数据分为两个区间,已排序区间和未排序区间.初始已排序区间只有一个元素,就是数组的第一个元素.插入算法的核心思想是取未 ...

  3. 排序算法---快速排序(java版)

    快速排序 原理 快速排序(Quick Sort)算法,简称快排,利用的也是分治的思想,快排的思路是:如果要对 m->n 之间的数列进行排序,我们选择 m->n 之间的任意一个元素数据作为分 ...

  4. Java排序算法:冒泡排序

    Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...

  5. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  6. 数据结构与算法基础(java版)

    目录 数据结构与算法基础(java版) 1.1数据结构概述 1.2算法概述 2.1数组的基本使用 2.2 数组元素的添加 2.3数组元素的删除 2.4面向对象的数组 2.5查找算法之线性查找 2.6查 ...

  7. java 奇偶数据排序算法,简单讲解奇偶排序算法及在Java数组中的实现

    简单讲解奇偶排序算法及在Java数组中的实现 奇偶排序是一个比较有个性的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序 举例吧, 待排数组 [6 2 4 1 5 9] ...

  8. 算法基础:排序算法之冒泡排序

    算法基础:排序算法之冒泡排序 实现:数列有序排序 思想:已知一个数列,令数列中相邻的两个元素一一做比较,按照小大的顺序(或从大到小的顺序),如果前一个数比后一个数大(或后一个数比前一个数大),则互换( ...

  9. 选择排序算法(基于Java实现)

    title: 选择排序算法(基于Java实现) tags: 选择算法 选择排序算法原理及代码实现: 一.选择排序算法的原理 选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间.但是选择 ...

最新文章

  1. 万字长文,说透了 Openshift4 的安装过程!
  2. 自旋锁spinlock解析
  3. Google Chrome调试js入门
  4. VSS源代码管理应该怎么样对bin目录及项目中用到的第三方组件进行管理?
  5. python如何控制浏览器_控制使用Python浏览器?
  6. 2500 万行的代码就问你敢不敢动?!
  7. Mac入门--安装PHP扩展redis,swoole
  8. git本地安装配置与基础概念
  9. 30亿参数,华为云发布全球最大预训练模型,开启工业化AI开发新模式
  10. 借助xUnit减少了生产问题
  11. opencv 创建调色板
  12. 中农考研计算机机考,开一个考研经验贴~2020中农考生,特别是农科大类考生看过来...
  13. 74cms3.0 SQL注入
  14. html中表格居中对齐
  15. 神经网络训练平台,在线神经网络训练
  16. 如何打印CSDN文章或把文章转换PDF
  17. [博学谷学习记录]超强总结,用心分享|人工智能机械学习基础知识线性回归总结分享
  18. ML之FE:特征工程处理中常用的数据变换(log取对数变换等)之详细攻略
  19. 可爱的小老鼠计算机教案,小班音乐鼠标小老鼠教案
  20. mongodb cond 模糊查询_NoSQL注入之MongoDB

热门文章

  1. ORACLE 索引信息查询
  2. 月薪3万的程序员告诉你:这样工作才能拿高薪
  3. 什么是WebGIS?
  4. [每日一题] Hello, 2020!
  5. 最全nacos-配置中心
  6. 如何快速转载CSDN中的博客
  7. 前端简介,head内标签
  8. 教师节祝福之shell版
  9. 一句话理解FPGA,VHDL,EDA到底有什么区别
  10. 将域名解析到空间服务器,如何把域名解析到IP