排序算法总结之冒泡排序
2014-08-21 13:24
253 查看
冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它的基本思想就是两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
例如:初始序列3,6,4,2,11,10,5;从头开始,两两相比,若a[i]>a[i+1],则将两者交换;
从上面的排序过程来看,其实在第2趟结束后,数据序列就已经是有序的了,因此可以提前结束循环,从而避免3~6趟的不必要的比较。
Java实现:
冒泡排序算法的空间效率很高,只需一个附加程序单元用于交换,其空间效率为O(1)。
同时冒泡排序是稳定的
例如:初始序列3,6,4,2,11,10,5;从头开始,两两相比,若a[i]>a[i+1],则将两者交换;
从上面的排序过程来看,其实在第2趟结束后,数据序列就已经是有序的了,因此可以提前结束循环,从而避免3~6趟的不必要的比较。
Java实现:
package com.liuhao.sort; import java.util.Arrays; public class BubbleSort { public static void bubbleSort(DataWrap[] data) { System.out.println("开始排序"); int arrayLength = data.length; for (int i = 0; i < arrayLength - 1; i++) { boolean flag = false; //记录某趟是否发生元素交换 for (int j = 0; j < arrayLength - 1 - i; j++) { // 处的元素值大于j+1处的,j处data要往后沉 if(data[j].compareTo(data[j+1]) > 0){ DataWrap tmp = data[j]; data[j] = data[j+1]; data[j+1] = tmp; flag = true; } } System.out.println(Arrays.toString(data)); //如果某趟没有发生交换,说明序列已经有序,就不需要进行之后的比较了 if(!flag){ break; } } } public static void main(String[] args) { DataWrap[] data = { new DataWrap(21, "") ,new DataWrap(30, "") ,new DataWrap(49, "") ,new DataWrap(30, "*") ,new DataWrap(16, "") ,new DataWrap(9, "") }; System.out.println("排序之前:" + Arrays.toString(data)); bubbleSort(data); System.out.println("排序之后:" + Arrays.toString(data)); } }排序效果:
算法分析
冒泡排序的时间效率是不确定的:最好的情况下,初始序列已经处在有序状态,执行一趟冒泡即可,做n-1次比较,无需进行任何交换;但在最坏的情况下,初始序列完全逆序,算法要执行n-1趟冒泡,第i趟做n-i次比较,执行n-i-1次对象交换,此时比较总次数为n*(n-1)/2,数据移动总次数为n*(n-1)*3/2。冒泡排序算法的空间效率很高,只需一个附加程序单元用于交换,其空间效率为O(1)。
同时冒泡排序是稳定的
相关文章推荐
- 排序算法总结1-冒泡排序
- 排序算法总结(七)冒泡排序
- 各种排序算法总结----基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- 排序算法总结:冒泡排序
- 总结几种排序算法(一)---冒泡排序
- 数据结构与算法:七种排序算法总结(冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序、快速排序)
- Java排序算法总结之(二)——基于交换排序(冒泡排序、快速排序)
- 排序算法总结(冒泡排序、直接插入排序、希尔排序)(python实现)
- 【排序算法总结】冒泡排序
- 【学习总结】Java中最常用的三大排序算法-冒泡排序、选择排序、插入排序
- [排序算法总结]冒泡排序、简单选择排序
- 排序算法总结---冒泡排序
- 排序算法总结(1)——冒泡排序
- Java常用排序算法冒泡排序与选择排序总结
- Java排序算法总结之冒泡排序
- iOS 排序算法总结—冒泡排序
- C++总结笔记(六)排序算法之冒泡排序
- 排序算法总结之冒泡排序 Bubble Sort
- 排序算法总结(3)--冒泡排序
- 排序算法总结之冒泡排序