排序算法之--冒泡排序
2017-08-26 15:18
387 查看
引用自:http://blog.csdn.net/lg1259156776/ 谢谢博主分享!
冒泡算法思想及步骤:
对象个数n。最多作最多作n-1趟, i= 0, 2, …, n-1 。
第i趟中从后向前j= n-1, n-2, ……, i,顺次两两比较。
比较如果发生逆序,则交换V[j-1] 和V[j]。
冒泡排序是第一个接触也最容易理解的排序算法,因为就像泡泡一样,最轻的率先“冒”出来占据第一的位置,随后是剩下的最轻的再冒出来,占据第二的位置,就这样一步步冒出来,也就完成了排序。总之就是每一趟都是将剩余中最大或最小的数据项排在前面已经“冒”出来的数据表后面,遍历完毕也就实现了排序。
冒泡算法java实现代码:
(从小到大排序)public class Bubble { public void BubbleSort(int a[]) { int i, j, temp; int IsReplaced = 0;//用来判断是否还需要比较 for (i = 0; i <a.length-1; i++) { IsReplaced = 0; for (j = 0; j < a.length-1-i; j++) {//每排序一次产生的最大的数和后面的数不参与下一次排序 if (a[j] > a[j + 1]) { temp = a[j + 1]; a[j + 1] = a[j]; a[j] = temp; IsReplaced = 1; } } System.out.print("第" + i + "趟排序结果:"); for (int k = 0; k < a.length; k++) { System.out.print(a[k] + ","); } System.out.println(); if (IsReplaced == 0) break; } } public static void main(String args[]) { Bubble bubble = new Bubble(); int[] a = {4, 6, 3, 2, 9, 3, 6, 2, 0, 34, 23, 65}; bubble.BubbleSort(a); } }最后测试结果如下:
第0趟排序结果:4,3,2,6,3,6,2,0,9,23,34,65, 第1趟排序结果:3,2,4,3,6,2,0,6,9,23,34,65, 第2趟排序结果:2,3,3,4,2,0,6,6,9,23,34,65, 第3趟排序结果:2,3,3,2,0,4,6,6,9,23,34,65, 第4趟排序结果:2,3,2,0,3,4,6,6,9,23,34,65, 第5趟排序结果:2 9af1 ,2,0,3,3,4,6,6,9,23,34,65, 第6趟排序结果:2,0,2,3,3,4,6,6,9,23,34,65, 第7趟排序结果:0,2,2,3,3,4,6,6,9,23,34,65, 第8趟排序结果:0,2,2,3,3,4,6,6,9,23,34,65,
说明:源代码中有两处改进,一个是用来判断是否还需要进行排序,因为对于给定的数组排序的最好情况为O(n),也就是完全正序排列 最坏情况的时间复杂度为O(n*n)(抱歉,没用函数编辑器),所以我们并不需要每次都按最坏的情况来进行排序,可以加判断条件 如果当前的序列已经为有序的那就不用再进行排序了。另外一个是对每次排序后产生的最大数以及这个数后面的数也不用再进行排序,因为每次排序后产生的最大数一定是小于上一次排序后的最大数的.这两个改进都提高了代码运行效率,对于进行数量比较多的元素排序是非常有必要的!
如有错误,欢迎指正,谢谢!
相关文章推荐
- 排序算法1 ——冒泡排序
- 排序算法-冒泡排序
- 排序算法-冒泡排序
- 排序算法(冒泡排序)
- 排序算法之冒泡排序、选择排序
- 排序算法快速排序和冒泡排序
- 经常使用排序算法实现[交换排序之冒泡排序、高速排序]
- 排序算法之冒泡排序
- 排序算法——冒泡排序
- 排序算法之冒泡排序
- 三种数组排序算法(冒泡排序、选择排序、插入排序、二分查找法)
- 经典排序算法(一)--冒泡排序、快速排序java实现
- Java排序算法--冒泡排序
- 排序算法之冒泡排序
- 经典排序算法 - 冒泡排序
- 排序算法之冒泡排序(Bubble Sort)
- 排序算法之——冒泡排序
- 排序算法(三)交换类排序:冒泡排序和快速排序
- 排序算法之冒泡排序
- 【排序算法】冒泡排序 bubble sort(交换类排序)