深入Java冒泡排序与选择排序的区别详解

2016-02-19 09:34 3 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的深入Java冒泡排序与选择排序的区别详解,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

冒泡排序
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
代码如下:
代码如下:

public class nums {
     public static void main(String[] args){
         int []nums = {5,4,3,2,1};
         for(int i = 0; i nums.length; i++){
             for(int j = 0; j nums.length-i-1; j++){
                 if(nums[j] nums[j+1]){
                     int temp = nums[j];
                     nums[j] = nums[j+1];
                     nums[j+1] = temp;
                 }
             }
             for(int x = 0;x nums.length;x++){
                  System.out.print(nums[x]+",");
              }
             System.out.print("n");
         }
     }
 }

每一轮比较后的输出如下:
代码如下:

1 4,3,2,1,5,
2 3,2,1,4,5,
3 2,1,3,4,5,
4 1,2,3,4,5,
5 1,2,3,4,5,

从输出中可以很清楚的明白冒泡排序的算法流程。
选择排序
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
代码如下:
代码如下:

public class nums {
     public static void main(String[] args){
         int []nums = {5,4,3,2,1};
         for(int i = 0; i nums.length; i++){
             for(int j = 0; j nums.length; j++){
                 if(nums[i] nums[j]){
                     int temp = nums[i];
                     nums[i] = nums[j];
                     nums[j] = temp;
                 }
             }
             for(int x = 0;x nums.length;x++){
                  System.out.print(nums[x]+",");
              }
             System.out.print("n");
         }
     }
 }

从代码中可以看出每轮比较中,nums[i]和数组中的每个元素都有作比较。
每一轮比较后的输出如下:
代码如下:

1 5,4,3,2,1,
2 4,5,3,2,1,
3 3,4,5,2,1,
4 2,3,4,5,1,
5 1,2,3,4,5,

从输出结果中还是很容易看出它与冒泡排序在算法上的区别。

来源:https://www.tulaoshi.com/n/20160219/1591298.html

延伸阅读
首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。 3个具体实现类的相关区别如下: 1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小...
标签: Web开发
Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在了解具体实现方法之前先来看看这两个接口的定义吧. SortComparatorSource接口的功能是返回一个用来排序ScoreDocs的comparator(Expe...
1.垃圾收集算法的核心思想 Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。 垃圾收集算法的核心思想是: 对虚拟机可用内存空间,即堆空间中的对象进行识别,如果...
---- 列表框控件在应用程序中的使用率很高,在windows中经常见到,它有四种常见的式样,分别具有显示大图标,小目标,含有图标的多列列表,含有列标头的列表。我们也经常见到一些扩展功能,例如我们在资源管理器中的文件列表框中,在选用详细资料察看时,用鼠标单击列标头,如大小,则所列文件按大小排序;单机日期,则按文件日期进行排序.这...
排序的含义 排序是指根据一组物体的某种特性的差异或按某种规则,按序进行排列。 排序锻炼宝宝逻辑思维能力 排序活动是培养幼儿逻辑思维能力的有效途径,幼儿通过排序活动,可以获得按序排列物体的经验,在思维中逐渐建立起序列结构,帮助幼儿理解数的顺序,促进幼儿的可逆性、传递性、双重性思维能力的发展,引导孩子...

经验教程

105

收藏

80
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部