算法基础之排序篇-冒泡排序
2012-08-06 10:33
141 查看
1、算法描述
依次比较相邻的数剧,将小的数排前面,大的排后面。
操作步骤
(1)、从第一个元素开始,依次与后一个数比较,小数放前,大数放后,结果是最大的放到了最后。
(2)、对前n-i个数重复(1),i从1至n-2,n为原序列大小。
2、图例
3、代码
public void sort(int[] data) { for (int i = data.length - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (data[j + 1] < data[j]) swap(data, j, j + 1); } } }
4、稳定性及复杂度
稳定性:冒泡排序是稳定的排序
平均时间复杂度:O(n^2)
原始的冒泡排序不管初始序列怎样都需要经过n(n-1)/2次比较,如果序列为上升序列,则交换次数为0,反之为下降序列则交换次数为n(n-1)/2次。通过使用标志位来标志上一次比较是否有交换发生,可以减少上升序列的比较次数为n-1次。
空间复杂度:O(1)
//ps:变种的冒泡排序(局部冒泡,双向冒泡等)这里就不一一 说了
相关文章推荐
- 黑马程序员—Java基础学习笔记之排序算法:选择排序&冒泡排序
- 基础算法之四--排序: 之冒泡排序
- 基础算法(一):选择排序和冒泡排序
- 基础算法之排序(1)--冒泡排序
- python实现基础排序算法之(冒泡排序)
- 排序算法---基础算法(冒泡排序,快速排序,选择排序,直接插入排序,桶排序)
- 【基础算法】选择排序与冒泡排序
- 数据结构与算法——三种基础排序算法C#实现(冒泡排序、选择排序、插入排序)
- PHP四种基础算法详解(冒泡排序、选择排序、插入排序、快速排序)
- java基础知识之 算法 【冒泡排序】【快速排序】
- 基础算法--排序: 之冒泡排序
- 基础算法 :冒泡排序,选择排序。。。。
- 基础算法之排序(1)--冒泡排序 改进
- 基础排序算法之快速排序(Quick Sort)
- PHP数据结构基本算法一:矩阵转置 求素数 冒泡排序 选择排序
- 算法基础:排序(三)——快速排序——Python实现
- C#算法基础之冒泡排序
- 基础算法(排序)
- 算法——排序之冒泡排序优化
- 基础算法排序之分治排序