千峰Java教程:029. 冒泡排序算法

本文深入讲解冒泡排序算法的工作原理,通过实例演示排序过程,并解释稳定排序与不稳定排序的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

12、冒泡排序算法

冒泡排序算法运作如下:(从后往前)

比较相邻的元素。如果第一个比第二个大,就交换他们两个。‘

对每一对相邻元素做同样工作,从开始第一对到结尾最后一队。在这一点,最后的元素应该是最大的数。

针对所有元素做同样的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法

按照上面的说法,我们比较一下下面的元素:

int[] nums = {86,54,23,7,90,48,11,66};
已经设置了上面的元素,都有
86 54 23 1 90 48 11 66
冒泡排序(从小到大):
54 23 1 86 48 11 66 90    第一轮,比较了7次,把最大的放到了最后
23 1 54 48 11 66 86       第二轮,比较了6次,把次大的放到了倒数第二
1 23 48 11 54 66          第三轮,比较了5次,把第三大的放到了倒数第三
1 23 11 48 54             第四轮,比较了4次,把第四大的放到了倒数第四
1 11 23 48                第五轮,比较了3次,把第五大的放到了倒数第五
1 11 23                   第六轮,比较了2次,把第六大的放到了倒数第六
1 11                      第七轮,比较了1次,把第七大的放到了倒数第七
结束!排出来为:1 11 23 48 54 66 86 90

我们来试试:


public class a
{
	public static void main(String[] args)
	{
		int[] nums = {86,54,23,7,90,48,11,66};
		int len = nums.length;
		//外循环控制轮数,比较轮数等于数列长度减一
		for(int i = 0 ; i < len-1; i++)
		{
			for(int j = 0 ; j < len-(i+1) ; j++)
			{
				if(nums[j] > nums[j+1])
				{
					nums[j+1] = nums[j] + nums[j+1];
					nums[j] = nums[j+1] - nums[j];		//if为两数排列
					nums[j+1] = nums[j+1] - nums[j];
				}
			}
		}
		//输出结果
		for(int x : nums)
		{
			System.out.print(x+" ");
			//System.out.print("\t");
		}
	}
}

 

 

我们再说一下稳定排序与不稳定排序区别:如果有这样一个数列:[7,2,4,4,6,8],排完之后是[2,4,4,6,7,8]。如果数列中第一个4在排完后是在第二个4前面,就说这个算法是稳定排序,否则就是不稳定排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值