Java排序算法——冒泡排序 及其稳定性和时间复杂度
冒泡排序(Bubble Sort)
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
原理如果不明白,可以直接看下面的运行结果,比较容易懂。
代码
public static void bubbleSort(int[] array) {int temp = 0;boolean flag = false;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]) {flag = true;temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}System.out.println("第" + (i+1) + "次排序后结果: " + Arrays.toString(array));if(!flag) {//优化break;}flag = false;}//System.out.println(Arrays.toString(array));}
结果
[8, 9, 1, 7, 2, 3, 5, 4, 6, 0]
第1次排序后结果: [8, 1, 7, 2, 3, 5, 4, 6, 0, 9]
第2次排序后结果: [1, 7, 2, 3, 5, 4, 6, 0, 8, 9]
第3次排序后结果: [1, 2, 3, 5, 4, 6, 0, 7, 8, 9]
第4次排序后结果: [1, 2, 3, 4, 5, 0, 6, 7, 8, 9]
第5次排序后结果: [1, 2, 3, 4, 0, 5, 6, 7, 8, 9]
第6次排序后结果: [1, 2, 3, 0, 4, 5, 6, 7, 8, 9]
第7次排序后结果: [1, 2, 0, 3, 4, 5, 6, 7, 8, 9]
第8次排序后结果: [1, 0, 2, 3, 4, 5, 6, 7, 8, 9]
第9次排序后结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
时间复杂度和稳定性
由于冒泡排序中用到两次for循环,忽略T(n)系数和低次项,可知时间复杂度为O(n^2)。
由原理和程序可知,冒泡排序是稳定的。(相同元素在排序前后的顺序一致)
Java排序算法——冒泡排序 及其稳定性和时间复杂度相关推荐
- Java排序算法——插入排序(Insertion Sort)
之前总结了交换排序的冒泡排序与选择排序的简单选择排序,这次我们来看看插入排序的简单插入排序~ 往期传送门: 冒泡排序: Java排序算法--冒泡排序(Bubble Sort)https://blog. ...
- Java十大排序算法总结,Java排序算法总结之冒泡排序
本文实例讲述了Java排序算法总结之冒泡排序.分享给大家供大家参考.具体分析如下: 前言:冒泡排序(BubbleSort)就是依次比较相邻的两个数,将小数放在前面,大数放在后面. 下面让我们一起 ...
- Java排序算法:冒泡排序
Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...
- java排序算法(插入排序,冒泡排序,选择排序)
java排序算法(插入排序,冒泡排序,选择排序) 先了解原理,然后自己跟着敲一下,加深印象 CMD编译命令:javac -encoding utf-8 SortList.java && ...
- Java排序算法——选择排序
Java排序算法--选择排序(Selection sort) 传送门 冒泡排序 插入排序 简述 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找 ...
- 如果我问你:排序算法的「稳定性」有何意义?你怎么回答?
点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 欢迎跳转到本文的原文链接:https://honeypps ...
- Java排序算法之直接选择排序
Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...
- 排序算法——冒泡排序(Bubble Sort)
排序算法--冒泡排序(Bubble Sort) 算法简介(Introduction) Bubble sort is to compare adjacent elements of the list a ...
- python排序算法 ——冒泡排序(附代码)
python排序算法 --冒泡排序 文章目录 python排序算法 --冒泡排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...
最新文章
- 计算机界最大“追书坑”,82岁大神高德纳仍在写《计算机程序设计艺术》4B卷...
- 循序渐进Python3(二) -- 数据类型
- 原生 遍历_细品原生JS从初级到高级知识点汇总(三)
- 60个数据窗口技巧(转)
- 翻译连载 | 附录 A:Transducing(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
- 《深入理解java虚拟机》第1章 走近Java
- 【C++基础学习】二维数组的动态分配及参数传递
- LeetCode: Substring with Concatenation of All Words
- 13. CSS 链接
- cygwin--简单备忘
- 用css+jquery实现视频永远占满全屏效果
- 全面了解决策管理平台
- 高德地图api使用过程出现崩溃
- Yolov5学习笔记(1)——训练出自己的模型
- PyTorch基础:Tensor的自动广播机制与向量化
- 数据库范式1NF 2NF 3NF BCNF通俗讲解
- LVGL8的窗口切换方式
- 【Bug修复】Room数据库 The columns returned by the query does not have the fields......
- Frustum culling
- 数据分析实战——城市餐饮店铺选址分析(1)