冒泡排序
2015-06-05 22:51
176 查看
What?
冒泡排序(Bubble Sort):排序方法的思想就像他的名称,像泡泡一样冒上来。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误,就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。每一轮大的数字都会先筛选出来,也就是像他的名称,大的元素会经过比较慢慢的浮出“水面”。
How?
如何使用冒泡排序?先从一张图来分析:
解释说明:
第一轮第二轮都是比较完之后的结果,他们是怎么对比的呢?看一下我们最初的数据,在得出第一轮比较的时候,他们的比较方法就是两个元素之间比较大小,我们可以看出不同颜色的长方形相嵌着,大的元素放在后边,最后最大的元素就会被选拔出来。这样依照此类的方法进行第二轮的对比,知道循环完了。
以上说的是冒泡排序的思想,同样我们也会在代码中有所体现。
Java代码:
Why?
相对比之前的选择排序,那么冒泡排序又有什么特点呢?
冒泡排序是一种稳定的算法,不管相同的元素是相邻还是不相邻的,他的排序方式就是根据相邻元素两两进行对比的,涉及到相同的元素,该怎么排序还是怎么排序。所以说不管是谁先出现的,他们的总是会有一个优先的位置。这样的排序算法很稳定。
[b]总结:
不管是冒泡排序,还是选择排序,只要理清思路,在纸上画一画,这样我们会很轻松的写出代码。如果眼高手低,我们大概只知道一些皮毛。同时今天的冒泡排序,还用到了运算符——异或(^),这样的一个小的知识,知识虽小,但是用起来还是挺生疏的,所以学过的东西,不仅要知道,还要尝试的去运用。
冒泡排序(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) { /*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?
相对比之前的选择排序,那么冒泡排序又有什么特点呢?
冒泡排序是一种稳定的算法,不管相同的元素是相邻还是不相邻的,他的排序方式就是根据相邻元素两两进行对比的,涉及到相同的元素,该怎么排序还是怎么排序。所以说不管是谁先出现的,他们的总是会有一个优先的位置。这样的排序算法很稳定。
[b]总结:
不管是冒泡排序,还是选择排序,只要理清思路,在纸上画一画,这样我们会很轻松的写出代码。如果眼高手低,我们大概只知道一些皮毛。同时今天的冒泡排序,还用到了运算符——异或(^),这样的一个小的知识,知识虽小,但是用起来还是挺生疏的,所以学过的东西,不仅要知道,还要尝试的去运用。
相关文章推荐
- 2013能量篇终止,2014精致篇起航
- windows内核情景分析之—— KeRaiseIrql函数与KeLowerIrql()函数
- MVC模型
- 写一些,给2013
- Jquery核心函数
- windows内核情景分析之——APC的执行
- Android下网络请求的两个封装类
- 严重: StandardServer.await: create[8005]:
- LeetCode——Median of Two Sorted Arrays
- 说说健身这件小事儿
- 我在寻求工作治理的方法(转)
- GitHub for Windows安装失败
- 【eclipse】【插件】myeclipse10 离线安装aptana插件
- Python快速入门(5)
- 转发:C#加密方法汇总
- 第二次冲刺——第二次总结
- 时间秒数转成时间格式
- redis 起步
- ASP.NET HttpModule URL 重写 (一) 【Z】
- 二叉搜索树实现