基本思想
冒泡排序(Bubble Sort)通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序(前后大小与要求的顺序不一致)则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。

代码实现

public class BubbleSort {/*** 按照从小到达的顺序进行排序* @param array 要进行排序的数组*/public static void bubbleSort(int[] array){int temp = 0;//用于前后元素交换时使用//数组有n个元素,排序只需n-1次就能完成for (int i = 0; i <array.length-1 ; i++) {for (int j = 0; j <array.length-1-i ; j++) {if (array[j]>array[j+1]){//前后元素进行交换,可以看出冒泡算法是一种交换算法temp = array[j];array[j] = array[j+1];array[j+1] = temp;}}}}
}

代码解释:

测试数组:int[] array = {23,9,-2,-1,8,99,100,91};
执行结果:

算法优化
可以从上述的每一趟的输出结果可以看出,在第二次排序完成后整个数组就已经按照从小到大的顺序排列了,后面的几次循环只是在执行if语句,而实际上并没有进行排序。浪费了时间和空间
优化:

int temp = 0;//用于前后元素交换时使用
boolean isChanged = false;//标识变量,记录数组是否提前完成了排序//数组有n个元素,排序只需n-1次就能完成
for (int i = 0; i <array.length-1 ; i++) {for (int j = 0; j <array.length-1-i ; j++) {if (array[j]>array[j+1]){isChanged  =true;//证明元素交换过,即数组还未完全有序temp = array[j];array[j] = array[j+1];array[j+1] = temp;}}if (!isChanged){break;//左右元素未交换,说明数组已完成排序,结束排序循环}System.out.printf("第%d次排序结果",i+1);System.out.println(Arrays.toString(array));isChanged = false;//重置,用于下次判断,这个重置非常重要
}

执行结果:

可以看出来for循环只执行了两次就结束并完成了数组的排序

Java实现冒泡算法及优化冒泡算法相关推荐

  1. 一种新颖的智能优化算法—飞蛾扑火优化(MFO)算法

    目录 一.算法理论基础 二.飞蛾扑火算法数学模型 三.MFO算法流程 四.MFO有效解决优化问题的分析 飞蛾扑火优化算法是Mirjalili于2015年提出的一种新型智能优化算法,其灵感来源于一种特殊 ...

  2. 计算机网络 对Reno算法的优化——NewReno算法

    Reno状态迁移图 实例分析Reno和NewReno 我们假设当前处于拥塞避免状态. 如下图,[0-11]的这个窗口内的12个数据包从发送方发送.不过1.4数据包还没到达接收方就丢失了. 一般情况下, ...

  3. 排序算法整合(冒泡,快速,希尔,拓扑,归并)

    冒泡排序介绍 冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序. 它是一种较简单的排序算法.它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小:如果前者比后 ...

  4. python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现

    写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c.java之类的运行速度快,应用Python实现主要是为了: ...

  5. 【数据结构与算法】排序 冒泡、插入、选择 O(n^2)

    冒泡.插入.选择 O(n2) 基于比较 快排.归并 O(nlogn) 基于比较 计数.基数.桶 O(n) 不基于比较 一.如何分析一个排序算法? 学习排序算法的思路?明确原理.掌握实现以及分析性能. ...

  6. 回炉篇5—数据结构(4)之冒泡、选择、插入排序算法

    冒泡.选择.插入排序算法 排序大家都很熟了,很古老的算法,古老才有必要回炉再看一遍,经典才值得研究. 1.冒泡排序 从字面意思理解,水泡从水底冒出到水面的过程中,由小慢慢大,最后大泡泡冒出水面,了解这 ...

  7. php冒泡算法排序,PHP算法大全(2)冒泡排序算法解决差生排序问题

    前言 算法是有用的,也是枯燥的,我们尽量用生活中的例子来描述.排序算法是算法中最基础的部分,今天我们一起来排序算法中的冒泡排序算法. 内容概要: 1.什么是冒泡算法-差生排序问题. 2.冒泡算法的动画 ...

  8. 2021新型面试题-血虐面试官斩获字节跳动Offer!Android 精选版面试题级答案(Android+Java+算法+性能优化+四大组件...)

    前言 双非本科,自认为技术水平不差,8月从美图实习离职回学校,各种倒霉的事不断,到现在11月,为了找个好的环境复习,9月又在学校附近租了房,基本是没有面试通知就学不进去,前面由于过于自信,也没拿个保底 ...

  9. 冒泡法和选择法 排序算法实现

    @冒泡法和选择法 排序算法实现 void swap(int& a, int& b) {int temp=0;temp = a;a = b;b = temp; }void bubble_ ...

最新文章

  1. Keepalived — VRRP 的 Linux 软件实现
  2. 将 Docker 踢出群聊后,Kubernetes 还能否欢快地蹦跶吗?
  3. 第18条:接口优于抽象类
  4. lucene学习001
  5. ArcMap 水文分析 部分功能
  6. 县级外业调查及举证软件_我公司中标江西省第三次全国国土调查县级建库软件项目...
  7. [渝粤教育] 广东-国家-开放大学 21秋期末考试市场营销10256k2
  8. FL Studio中钢琴卷帘窗的工具的使用
  9. 软件行业各职位英文缩写
  10. 微信小程序蓝牙连接TSPL打印机打印图片思路
  11. AB1562_UT软件分辨真假洛达1562A,洛达1562a怎么鉴别?
  12. 基于数据挖掘的商业银行客户关系管理系统应用研究
  13. 文化馆建筑方案设计原理及方案
  14. uni-app-微信小程序-预览报错
  15. kali系统下安装Vscode
  16. Portal产品对比分析报告
  17. 中标麒麟NeokylinV7关闭广播消息
  18. web开发从入门到精通一(详细)
  19. 多元线性回归分析练习题
  20. 美团拼多多挑起社区团购新战事,谁能“见血封喉”?

热门文章

  1. 苹果皮的小奥秘_拔剑-浆糊的传说_新浪博客
  2. java web网站集成新浪微博登录
  3. 英文论文提交后各阶段含义
  4. 华为强硬回应被 Wi-Fi 联盟等“除名”
  5. C++的重载操作符(operator)介绍
  6. 敏捷计划:是一个多层次的计划洋葱
  7. 华为nova9系列新品发布:开启Vlog拍摄新玩法
  8. 利用jmap查看一个class声称的实例个数
  9. 二分查找求最大值用master公式
  10. 华为、微软、瑞幸、维达、奈飞、爱彼迎等公司高管变动