冒泡排序(Bubble Sort)原理及Java实现
来源:互联网 发布:陈丹婷淘宝 编辑:程序博客网 时间:2024/05/24 04:50
冒泡排序 (Bubble Sort) 算法是一种基于交换的排序算法,其思想是,依次比较相邻元素的大小,如果反序,则进行交换,然后再进行下一次排序——如果数据集合的长度为n ,则下一次对前n-1的数据进行冒泡排序。
比如:
第一趟排序 :R1 和R2 比较, R2 和 R3 比较 .... Rn-1 和Rn 比较。得到最大值或最小值Rn
第二趟排序: R1 和R2 比较, R2 和 R3 比较 .... Rn-2 和Rn-1 比较。得到最大值或最小值前n-1个数中的最值 Rn-1
..........................
直到只剩下最后一个数 R1 为有序。
但是,实现的时候一般换另一种方法,用R1 和后面的 n-1 个数依次比较 得到一个最值R1 ——这是第一趟冒泡排序;
第二趟冒泡排序: 用R2 和后面的n-2个数比较 ,得到一个最值 R2 ....
依次执行,直到最后剩下Rn为有序。
如对R = {37, 40, 38, 42, 461, 5, 7, 9, 12}进行冒泡排序;
初始序列3740384246157912第一趟排序5403842461377912第二趟排序5740424613837912第三趟排序5794246140383712第四趟排序5791246142403837第五趟排序5791237461424038第六趟排序5791237384614240第七趟排序5791237384046142第八趟排序5791237384042461第九趟排序的时候已经有序。
下面分析一下每一趟排序的结果是如何来的,假设为顺序存储:
集合R3740384246157912元素位置123456789在第一次排序过程中,用R1 = 37 , 和后面的 Ri ( 1<i <= 9)比较 , 发现 R1 > R6 , 交换位置,得到新的排列:
集合R5403842461377912元素位置123456789发现没有比R1=5 , 小的元素,第一趟排序结束。
第二趟排序R2=40,发现R3 比R2交换得到新的排列
集合R5384042461377912元素位置123456789继续比较,发现R2 比R6大 交换位置得到新的排列集合R5374042461387912元素位置123456789继续比较,发现R2 比R7大,交换得到新的排列集合R5740424613837912元素位置123456789继续比较,没有比R2 = 7 更小的元素, 第二趟排序结束。有兴趣的童鞋可以自己推到一偏。以此类推,知道Ri = n-1 = 8;
以下是上述思想的Java实现版:
public static void bubbleSort(int[] array) { if (null == array || array.length == 0) return; int temp; for (int i = 0; i < array.length - 1; i++) { for (int j = i + 1; j < array.length; j++) { if (array[j] < array[i]) { temp = array[j]; array[j] = array[i]; array[i] = temp; } } } }
0 0
- 冒泡排序(Bubble Sort)原理及Java实现
- 冒泡排序算法(Bubble Sort) Java实现
- java冒泡排序Bubble sort
- JAVA冒泡排序 Bubble Sort
- 冒泡排序(Bubble Sort)
- 冒泡排序(bubble sort)
- 冒泡排序(Bubble Sort)
- 冒泡排序 (Bubble sort)
- 冒泡排序(bubble sort)
- Bubble Sort(冒泡排序)
- 冒泡排序(Bubble sort)
- 冒泡排序(Bubble Sort)
- 冒泡排序(Bubble Sort)
- 冒泡排序(Bubble Sort)
- 冒泡排序(Bubble Sort)
- Bubble-Sort(冒泡排序)
- 冒泡排序(bubble sort)
- 冒泡排序(Bubble Sort)
- SSL协议学习
- 第四十九天【java虐我千百遍,我待java如初恋】
- 黑马程序员--java基础学习总结
- Virtualbox中的虚拟机和主机ping通
- ABAP学习笔记
- 冒泡排序(Bubble Sort)原理及Java实现
- jdbc与oracle和mysql连接工具类的写法
- Spring3.0 入门进阶(4):注解式控制器简介
- Android AlarmManager 定时会 “失效” 的问题
- 快速排序的算法实现
- 解决在IBM JDK下公钥验签失败的问题
- 数据库创建的表进行了更改时弹出“阻止保存要求重新创建表的更改”错误
- iOS开发笔记之多点触控(一)处理触摸的4个方法
- [2009.09.13]透视内幕:美国陆战队一号[2009年美国记录片]