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

2016-02-19 09:34 7 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,

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

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

延伸阅读
---- 列表框控件在应用程序中的使用率很高,在windows中经常见到,它有四种常见的式样,分别具有显示大图标,小目标,含有图标的多列列表,含有列标头的列表。我们也经常见到一些扩展功能,例如我们在资源管理器中的文件列表框中,在选用详细资料察看时,用鼠标单击列标头,如大小,则所列文件按大小排序;单机日期,则按文件日期进行排序.这...
排序的含义 排序是指根据一组物体的某种特性的差异或按某种规则,按序进行排列。 排序锻炼宝宝逻辑思维能力 排序活动是培养幼儿逻辑思维能力的有效途径,幼儿通过排序活动,可以获得按序排列物体的经验,在思维中逐渐建立起序列结构,帮助幼儿理解数的顺序,促进幼儿的可逆性、传递性、双重性思维能力的发展,引导孩子...
首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。 3个具体实现类的相关区别如下: 1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小...
标签: Web开发
Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在了解具体实现方法之前先来看看这两个接口的定义吧. SortComparatorSource接口的功能是返回一个用来排序ScoreDocs的comparator(Expe...
程序代码如下: 代码如下: // BubbleSort.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include cmath #include iostream using namespace std; #define  MAXNUM 20 templatetypename T void Swap(T& a, T& b) {     int t = a;     a = b;     b = t; } templatetypenam...

经验教程

690

收藏

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