/*
冒泡排序原理
比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。
对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。
实现步骤
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
时间复杂度
  冒泡排序总的时间复杂度为O(n^2)。
改进方法-添加标记
在排序过程中,执行完最后的排序后,虽然数据已全部排序完备,但程序无法判断是否完成排序。
为了解决这一不足,可设置一个标志位flag,将其初始值设置为非0,表示被排序的表是一个无序的表,每一次排序开始前设置flag值为0,在进行数据交换时,修改flag为非0。
在新一轮排序开始时,检查此标志,若此标志为0,表示上一次没有做过交换数据,则结束排序;否则进行排序;
*/
//代码实现
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
//将数组中的元素从小到大排序
//创建数组
Integer[] arr = {5, 9, 6, 7, 14, 10};
Integer temp;//交换变量
for (int i = arr.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {//比较两个数据,前面数据大时交换位置
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
      //打印排序结果
System.out.println(Arrays.toString(arr));
}
}

最新文章

  1. Spring5:@Autowired注解、@Resource注解和@Service注解
  2. 如何让Maple中的数学引擎进入你的桌面应用程序和网站
  3. 【原创】开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器
  4. Goals100
  5. Atitti.数字证书体系cer pfx attilax总结
  6. org.hibernate.hql.ast.QuerySyntaxException: XXX is not mapped
  7. js: this,call,apply,bind 总结
  8. iOS ARC下dealloc过程及.cxx_destruct的探究
  9. 【C#编程基础学习笔记】4---Convert类型转换
  10. C#调用C++动态库时类型转换
  11. 《31天成为IT服务达人》最新文件夹
  12. hdu3076—概率dp
  13. 【转载】C#工具类:实现文件操作File的工具类
  14. mysql-笔记 架构
  15. MySql 8.0 C#连接报错 MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to host &#39;12.118.224.181&#39; for user &#39;root&#39; using method &#39;caching_sha2_password&#39; failed with message: Reading from t
  16. 机器学习笔记之二-win10+cuda9.1+CUDNN7+Anaconda3+VS2017+tensorflow1.5+opencv3.4
  17. Tensorflow环境下安装Pandas
  18. MySQL基础操作1
  19. ext Table中CommandColumn用法
  20. flex 兼容性写法

热门文章

  1. lua调用dll导出的函数
  2. .gitignore规则不生效
  3. 双十一NGK官方快讯!
  4. ArrayList的简单实现
  5. vue高级
  6. Oracle kill locked sessions
  7. springboot项目打包成jar包在Linux服务器默认80端口运行
  8. Redis操作指南
  9. 第35天学习打卡(输入框 TextField监听 简易计算器,组合+内部类回顾复习 画笔 鼠标监听 窗口监听 键盘监听)
  10. 一些 html+css 细节