冒泡排序法----Java实现

冒泡排序(BubbleSort)

1、思想

通过无序区中相邻记录关键字间的比较和位置的交换,使关键字最小的记录如气泡一般逐渐往上“漂浮”直至“水面”。 

 

2、时间复杂度  

最好情况下:正序有序,则只需要比较n次。故,为O(n)  
最坏情况下:  逆序有序,则需要比较(n-1)+(n-2)+……+1,故,为O(N*N)

 

3、稳定性  

排序过程中只交换相邻两个元素的位置。因此,当两个数相等时,是没必要交换两个数的位置的。所以,它们的相对位置并没有改变,冒泡排序算法是稳定的!

 

4、实现

 

public class BubbleSort {

 

/**

* @param args

*/

public static void main(String[] args) {

int[] data = { 49, 38, 65, 97, 76, 13, 27, 9 };

bubbleSort(data, 0, data.length - 1); // 第一种实现方式

printData(data);

}

 

public static void bubbleSort(int [] data ,int low ,int high){

if(low>=high){

return ;

}

for(int i =low ;i<high;i++){

for(int j=high;j>i;j--){

if(data[i]>data[j]){

swap(data, i, j);

}

}

}

}

 

public static void swap(int[] data, int i, int j) {

int temp = data[i];

data[i] = data[j];

data[j] = temp;

}

 

public static void printData(int[] data) {

for (int i : data) {

System.out.print(i + " ");

}

}

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值