java冒泡法快速理解

java冒泡法快速理解

在算法十大排序中,冒泡法是其中最为简单最易理解的一种方法,下面带大家一起看一下
冒泡法的原理:顾名思义冒泡法就是像泡泡一样的冒出来,不过这里的泡泡是你所排序的相对的较大值或者较小值,通过相邻的数值比较把较大值或者较小值冒出来。
下面一个例子简单说明:
一个数组 {3,1,9,5,7,2,8},我想对其增序排列
第一轮:

  • 第一次3和1进行比较,因为3大于1所以交换顺序,数组变为:
    {1,3,9,5,7,2,8}
  • 第二次3和9进行比较,因为3小于9符合我们的要求,所以不进行交换,数组仍然为:
    {1,3,9,5,7,2,8}
  • 第三次9和5进行比较,因为9大于5所以交换顺序,数组变为:
    {1,3,5,9,7,2,8}
  • 第四次9和7进行比较,因为9大于7所以交换顺序,数组变为:
    {1,3,5,7,9,2,8}
  • 第五次9和2进行比较,因为9大于2所以交换顺序,数组变为:
    {1,3,5,7,2,9,8}
    第六次9和8进行比较,因为9大于8所以交换顺序,数组变为:
    {1,3,5,7,2,8,9}

可以发现经过第一轮6次的排序,最大值9“冒泡”了出来,成为了数组的最后一个元素,之后进行第二轮排序,最大值9就放在最后一个位置不用动了。

第二轮:

  • 第一次1和3进行比较,因为1小于3符合我们的要求,所以不进行交换,数组仍为:
    {1,3,5,7,2,8,9}
  • 第二次3和5进行比较,因为3小于5符合我们的要求,所以不进行交换,数组仍然为:
    {1,3,5,7,2,8,9}
  • 第三次5和7进行比较,因为5小于7符合我们的要求,所以不进行交换,数组仍然为:
    {1,3,5,7,2,8,9}
  • 第四次7和2进行比较,因为7大于2所以交换顺序,数组变为:
    {1,3,5,2,7,8,9}
  • 第五次7和8进行比较,因为7小于8符合我们的要求,所以不进行交换,数组仍然为:
    {1,3,5,7,2,8,9}
  • 第六次8和9进行比较,因为8小于9符合我们的要求,所以不进行交换,数组仍然为:
    {1,3,5,7,2,8,9}

可以发现经过第二轮五次的排序,次大值8“冒泡”了出来,成为了数组的倒数第二个元素,之后进行第三轮排序,最大值9和次大值8就可以放在最后一个位置不用动了

。。。。。。。。
。。。。。。。。
。。。。。。。。 此处省略后几轮的排序
。。。。。。。。
。。。。。。。。

进过六轮的排序最终可达到我们的要求,得出升序数组结果 {1,2,3,5,7,8,9}
同时我们发现,进行7个数的排序,需要进行轮排序,而每一轮排序进行6次排序

可得出结论,若进行N个数值排序,需要进行N-1轮排序,而每一轮排序进行N-1次排序

下面附上代码供参考:

package suanfa;
public class maopao {

	public static void main(String[] args) {
		int i,j;
		int temp = 0;
		int arry[]= {9,6,7,20,8,4,60,22,15};
//		冒泡排序
		for(i=0;i<arry.length-1;i++)
		{
			for(j=0;j<arry.length-1;j++)
			{
				if(arry[j]>arry[j+1])
				{
		//交换元素			
					temp=arry[j];
					arry[j]=arry[j+1];				
					arry[j+1]=temp;
				}
			}
		}
//		输出数组
		System.out.print("排序结果为");
		for(i=0;i<arry.length;i++)
		{
			System.out.print("  "+arry[i]);
		}

	}

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值