冒泡排序

【冒泡排序思想】冒泡排序属于交换类排序算法。基本思想为:首先将第一个记录和第二个记录进行比较,如果第一个记录大,则将两者交换位置,否则不交换;然后将现在的第二个记录和第三个记录比较,如果第二个大,则二者交换,否则不交换……一直按照这种方式进行下去,最终整个数列中的最大值将被交换到数列的最后,一趟冒泡排序结束。根据这个思想我们可以看出,一旦一趟冒泡排序结束,那么就一定能把参与这趟排序的数列中的最大值找出并排在正确的位置上。

【冒泡排序Java代码实现】

public class BubbleSort {

	public void bubble_sort(int[] array){
		for (int i = array.length-1; i >= 1; --i) {    //循环从最后开始,每一趟冒泡排序都能找到当前排序的最大值,并把最大值交换到正确的位置上
			int flag = 0;    //交换标志位,默认为0,代表这一趟冒泡排序中没有发生过交换
			for (int j = 1; j<= i; ++j) {    //在一趟冒泡排序中两两比较
				if (array[j-1] > array[j]) {    //如果前边的元素大于后边的元素,则将两个元素交换位置
					int temp = array[j];
					array[j] = array[j-1];
					array[j-1] = temp;
					flag = 1;    //交换后,将交换标志位置1,表示该趟冒泡排序中发生过交换
				}
			}
			if(flag == 0)    //如果一趟冒泡排序中没有发生过任何交换,则代表当前数列已经有序,直接退出排序
				break;
		}
		for (int k = 0; k < array.length; k++) {    //排序结束后,输出有序数列
			System.out.print(array[k]+"  ");
		}
	}
}

【冒泡排序测试代码】

public class SortTest {

	public static void main(String[] args) {
		int[] array = {0,49,38,65,97,76,13,27,49};
		System.out.println("冒泡排序结果为:");
		BubbleSort bubbleSort = new BubbleSort();
		bubbleSort.bubble_sort(array);		
	}

}

【冒泡排序测试结果】


【冒泡排序复杂度分析】① 在最坏情况下,即数列逆序,则时间复杂度为O(n^2)。② 在最好情况下,即数列已经有序,则时间复杂度为O(n)。③ 在平均情况下,冒泡排序的时间复杂度为O(n^2)。④ 由于冒泡排序只用了一个临时变量temp来辅助交换,因此空间复杂度为O(1)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值