您的位置:首页 > 其它

算法基础之排序篇-冒泡排序

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:变种的冒泡排序(局部冒泡,双向冒泡等)这里就不一一 说了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: