冒泡排序

本文介绍了冒泡排序的基本思想和工作过程,通过示例和图解详细阐述了冒泡排序如何通过比较和交换将较大元素逐步上移。文章提供了Java代码示例,并对比了冒泡排序与选择排序的区别,强调冒泡排序的稳定性。同时,文章提醒读者,理论知识要结合实践,例如在冒泡排序中运用异或运算符。
摘要由CSDN通过智能技术生成

What?

            冒泡排序(Bubble Sort):排序方法的思想就像他的名称,像泡泡一样冒上来。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误,就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。每一轮大的数字都会先筛选出来,也就是像他的名称,大的元素会经过比较慢慢的浮出“水面”。


How?

     如何使用冒泡排序?先从一张图来分析:

                     

     解释说明:

                   

       第一轮第二轮都是比较完之后的结果,他们是怎么对比的呢?看一下我们最初的数据,在得出第一轮比较的时候,他们的比较方法就是两个元素之间比较大小,我们可以看出不同颜色的长方形相嵌着,大的元素放在后边,最后最大的元素就会被选拔出来。这样依照此类的方法进行第二轮的对比,知道循环完了。

       以上说的是冒泡排序的思想,同样我们也会在代码中有所体现。

        Java代码:

<span style="font-size:18px;">/*
作者:雪
时间:2015年5月11日
功能:冒泡排序
思路:
	冒泡排序就是进行两个两个的对比
	第一个元素和 第二个元素对比,第二个元素和第三个元素进行对比。。。
	也就是紧挨着的元素进行对比,这是内循环,外循环主要就是这样的两两排序一共需要进行多少次
原理:
	冒泡排序的原理,每次一排序就会筛选出最大值,然后第一次肯定筛选出的是最大的值
	第二次就减少一次元素的比较
	第三次减少两个元素的比较
	知道最后剩下的两个元素就可以不进行比较了。。
*/
public class BubbleSort
{
	public static void Bubble(int arry[])
	{
		for(int x=0;x<arry.length;x++)
		{
			for(int y=0;y<arry.length-1-x;y++)//x是每一次排序元素减少的个数,-1是为了不要让下表越界
			{
				/*此方法被封装,这样不仅冒泡排序可以使用,选择排序也可以使用
				if(arry[y]<arry[y+1])
				{             

					int tmp=arry[y+1];
					arry[y+1]=arry[y];
					arry[y]=tmp;
					}
					*/
					compare(arry,y,y+1);
				}
			 }
		}
		//主函数调用功能
		public static void main(String[] args)
		{
			int arr[]={4,7,2,1,8,9,34};
			Print(arr);
			Bubble(arr);
			Print(arr);
			
			}
		public static void Print(int[] arry)
		{
			for(int x=0;x<arry.length;x++)
			{
				//如果x不是最后一个元素
				if(x!=arry.length-1)
				{
					System.out.print(arry[x]+",");
					}
				else
				{
					System.out.print(arry[x]);
					}
				}
				System.out.println("");
			}
			//不管是冒泡排序,还是选择排序都有一个共同的功能就是比较大小的功能
			public static void compare(int arry[],int a,int b)
			{
				if(arry[a]>arry[b])
				{
				         /*1.可以采用异或      
					arr[y]=arry[y]^arry[y+1];
                                        arry[y+1]=arry[y]^arry[y+1];
                                        arry[y]=arry[y]^arry[y+1];
                                       */
					int temp=arry[a];
					arry[a]=arry[b];
					arry[b]=temp;
					}
				}
	}</span>


Why?

          相对比之前的选择排序,那么冒泡排序又有什么特点呢?

      冒泡排序是一种稳定的算法,不管相同的元素是相邻还是不相邻的,他的排序方式就是根据相邻元素两两进行对比的,涉及到相同的元素,该怎么排序还是怎么排序。所以说不管是谁先出现的,他们的总是会有一个优先的位置。这样的排序算法很稳定。


总结:

        不管是冒泡排序,还是选择排序,只要理清思路,在纸上画一画,这样我们会很轻松的写出代码。如果眼高手低,我们大概只知道一些皮毛。同时今天的冒泡排序,还用到了运算符——异或(^),这样的一个小的知识,知识虽小,但是用起来还是挺生疏的,所以学过的东西,不仅要知道,还要尝试的去运用。

      

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值