排序算法---冒泡排序(java版)
冒泡排序
原理
冒泡排序(Bubble Sort)是一种简单的排序算法,它通过依次比较两个相邻的的元素,看两个元素是否满足大小关系要求,如果不满足则交换两个元素。每一次冒泡会让至少一个元素移动到它应该在的位置上,这样 n 次冒泡就完成了 n 个数据的排序工作。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
算法过程描述
- 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
- 针对所有的元素重复以上两个步骤,除了最后一个;
- 重复前三步,直到排序完成。
算法执行过程如下图
代码实现
public class BubbleSort {public static void main(String[] args) {int arr[] = {3, 9, -1, 10, 11};BubbleSort(arr);}public static int[] BubbleSort(int arr[]) {int temp = 0;//标志是否一次排序经过元素之间的交换boolean flag = false;for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] > arr[j + 1]) {flag = true;temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}System.out.println(Arrays.toString(arr));if (!flag) {break;} else {flag = false;}}return arr;}
}
1:冒泡排序的时间复杂度是多少?
最好情况下,要排序的数据已经是有序的了,我们只需要进行一次冒泡操作,就可以结束了,所以最好情况时间复杂度是 O(n)。而最坏的情况是,要排序的数据刚好是倒序排列的,我们需要进行 n次冒泡操作,所以最坏情况时间复杂度为 O(n2)。
2:冒泡排序的空间复杂度是多少?
冒泡的过程只涉及相邻数据的交换操作,只需要常量级的临时空间,所以它的空间复杂度为 O(1),是一种 in-place 排序算法。
3:冒泡排序是稳定的排序算法吗?
在冒泡排序中,只有交换才可以改变两个元素的前后顺序。为了保证冒泡排序算法的稳定性,当有相邻的两个元素大小相等的时候,我们不做交换,相同大小的数据在排序前后不会改变顺序,所以冒泡排序是稳定的排序算法。
排序算法---冒泡排序(java版)相关推荐
- 经典排序算法(Java版)
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 经典排序 ...
- 八大经典排序算法(java版)
这里写目录标题 交换算法之冒泡排序 交换算法之快速排序 插入算法之插入排序 插入排序之希尔排序 选择排序之简单选择排序 排序算法之归并排序 排序算法之基数排序 常用排序算法之堆排序 交换算法之冒泡排序 ...
- 十大排序算法入门(JAVA版)
文章目录 前言 ❤️冒泡排序
- 经典十大排序算法(含升序降序,基数排序含负数排序)【Java版完整代码】【建议收藏系列】
经典十大排序算法[Java版完整代码] 写在前面的话 十大排序算法对比 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 插入排序 希尔排序 计数排序 桶排序 基数排序 完整测试类 写在前面的话 ...
- Twitter的分布式雪花算法 SnowFlake 每秒自增生成26个万个可排序的ID (Java版)
分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有些时候我们希望能使用一种简单一 ...
- 内部排序比较(Java版)
内部排序比较(Java版) 2017-06-21 目录 1 三种基本排序算法 1.1 插入排序 1.2 交换排序(冒泡) 1.3 选择排序(简单) 2 比较 3 补充 3.1 快速排序 3.2 什么是 ...
- 八大排序算法的java实现
八大排序算法的java实现 有时间再贴算法分析图 JDK7的Collections.sort()的算法是TimSort, 适应性的归并排序, 比较晦涩难懂, 这里没有实现 public class m ...
- java 3 9 2 6数字排序_GitHub - JourWon/sort-algorithm: 史上最全经典排序算法总结(Java实现)...
史上最全经典排序算法总结(Java实现) 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗, ...
- 几种简单的排序算法(JAVA)
几种排序算法(JAVA) 一.代码 package com.hdwang;import java.util.Arrays;/*** Created by admin on 2017/1/20.*/ p ...
- 十大排序算法(Java)
文章目录 十大排序算法(Java) 一.冒泡排序(Bubble Sort) 二.选择排序(Selection Sort) 三.堆排序(Heap Sort) 四.插入排序(Insertion Sort) ...
最新文章
- python字典导入mongodb_Python中的有序字典:添加到MongoDB
- matlab中的square函数
- boost::test::basic_cstring相关的测试程序
- Python基础-小程序练习(跳出多层循环,购物车,多级菜单,用户登录)
- 从0到1 | 0基础/转行如何用3个月搞定机器学习
- Python 编程问题集
- python脚本 游戏赚金币_python捡金币游戏(上)
- oracle宕机原因排查,oracle不定期的出现宕机的问题诊断
- Android自定义view之measure、layout、draw三大流程
- linux - 查看是否安装 apache 以及 apache 版本
- 反射生成SQL语句入门
- 关于autoconf
- tp3.2 视图中U函数传变量值
- css拖动音乐进度条,利用CSSclip实现音频播放圆环进度条教程实例
- 福州船政计算机专业多少钱,福建船政交通职业学院怎么样排名多少?特色专业?录取分数线及收费...
- 在Python中建立N维数组并赋初值
- STM32单片机的学习
- 一对一直播app大热,使用源码或自主开发一对一APP需要了解哪些技术?...
- 如何调用EasyCVR平台的登录、播放地址、录像回看接口?
- 搜网页显示未连接上服务器是什么,【科普君】网页搜索时,出现“404”到底是什么意思?...
热门文章
- php 中find,Linux中find命令的用法汇总
- php持续写入文件,PHP:如何读取不断写入的文件
- excel表格行列显示十字定位_Excel行列十字交叉高亮显示
- 新人python2和python3的区别_未明学院:Python2与Python3的主要区别
- deepnode处理过的图片_这款实用的图片软件,其功能相当于十几款图片处理软件的功能之和...
- linux mysql 开启远程访问
- 到成都去是联想的必然选择
- Error creating bean with name 'messageSource' defi
- 新浪微博IPO,曹国伟策略之功
- ExpandableListView(一)替换系统默认的箭头