网站首页 > 精选教程 正文
- 基本思想: 比较两个相邻的元素,将值大的元素交换到右边,雪碧中常常有许多小小的气泡,往上飘,这是因为组成小气泡的二氧化碳比水要轻,所以小气泡才会一点一点的向上浮。而冒泡排序之所以叫冒泡排序
- 直观表达,每一趟遍历,将一个最大的数移到序列末尾。
算法描述
比较相邻的元素,如果前一个比后一个大,交换之。
......
因此需要n-1趟
代码实现
public class BubbleSortMain {
public static void main(String[] args) {
Integer[] arr = {2,5,1,3,8,5,7,4,3};
System.out.println(Arrays.deepToString(arr)); // 排序前
sortBubble(arr);
System.out.println(Arrays.deepToString(arr)); // 排序后
}
// 冒泡方法
private static void sortBubble(Integer[] arr) {
if (arr==null||arr.length<2){
return;
}
for (int i=0;i<arr.length-1;i++){
for (int j=0;j<arr.length-i-1;j++){
if (arr[j]>arr[j+1]){
int temp= arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
冒泡排序时间复杂度
冒泡排序的时间复杂度是O(N2)。
假设被排序的数列中有N个数。遍历一趟的时间复杂度是O(N),需要遍历多少次呢?N-1次!因此,冒泡排序的时间复杂度是O(N2)。
冒泡排序稳定性
冒泡排序是稳定的算法,它满足稳定算法的定义。
算法稳定性 -- 假设在数列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;并且排序之后,a[i]仍然在a[j]前面。则这个排序算法是稳定的!
- 上一篇: Java算法总结之冒泡排序(详解)
- 下一篇: 什么是冒泡排序算法?使用Java实现一个冒泡排序算法?
猜你喜欢
- 2024-12-04 程序入门:冒泡排序(C++)
- 2024-12-04 算法学习-JavaScript冒泡排序与选择排序
- 2024-12-04 西门子SCL编程实例——冒泡排序算法(更新版)
- 2024-12-04 python冒泡排序
- 2024-12-04 C语言 冒泡排序
- 2024-12-04 Python中的关键算法之”冒泡排序“
- 2024-12-04 西门子SCL语言编程实例——冒泡排序
- 2024-12-04 宇哥编程算法练习:冒泡排序的原理(基于Access数据库VBA)
- 2024-12-04 看动画学算法之:排序-冒泡排序
- 2024-12-04 西门子SCL编程实例—冒泡排序算法的实现
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)