您的位置:首页 > 理论基础 > 数据结构算法

数据结构排序系列详解之三 冒泡排序

2013-07-28 20:33 204 查看
前面两篇博客讲述的排序算法都是基于插入类的排序,这篇文章开始介绍交换类的排序算法,即:冒泡排序、快速排序(冒泡排序的改进)。

交换类的算法:通过交换逆序元素进行排序的方法。

冒泡排序:反复扫描待排序记录序列,在扫描的过程中,顺次比较相邻的两个元素的大小,若逆序就交换位置。

算法实现代码如下:

package exp_sort;

public class BubbleSort {

public static void bubble(int array[]) {

boolean change = true;
for (int i = 0; i < array.length && change; i++) {
change = false;
for (int j = 0; j < array.length - i - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
change = true;
}
}
}

for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println("\n");

}

public static void main(String[] args) {
// TODO Auto-generated method stub

int array[] = { 38, 62, 35, 77, 55, 14, 35, 98 };
bubble(array);
}

}


算法分析:最好的情况是,需要排序的初始状态是正序排列的,则一趟扫描即可完成,此时时间复杂度是O(n);最坏情况是,需要排序的初始状态是反序的,则需要n-1趟扫描,此时时间复杂度是
O(n^2),空间复杂度是
O(1);该算法是一种
稳定的排序方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: