三种排序方法用java实现

Posted archer-lcy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三种排序方法用java实现相关的知识,希望对你有一定的参考价值。

  用三种方法实现几个数的排序:冒泡排序,选择排序,调用Java里的库函数

1、 冒泡排序:顾名思义,就是将小的数一步一步往上冒,大的数一个个往下沉,下面是自己写的对冒泡排序的理解,字丑将就看一下吧。

技术分享图片

 

2、选择排序:以从小到大为例,定义一个变量min_inter,用于记录最小值的下标,找到最小的数放在第0位,第二小放在第1位,后面依次。

3、直接调用:Arrays.sort(num3);需要导入import java.util.Arrays;

下面是代码:

 1 import java.util.Arrays;
 2 
 3 /**
 4 *排序法,冒泡,选择
 5 *从小到大
 6 *@author:Archer-LCY
 7 *@date:2018年1月16日下午12:07:09
 8 */
 9 public class Sortway {
10     public static void main(String[] args) {
11         final int N=50000;//常量
12         int [] num1=new int[N];
13         int [] num2=new int[N];
14         int [] num3=new int[N];
15         for(int i=0;i<num1.length;i++) {
16             num1[i]=(int)(Math.random()*N*10);//随机生成N个数,为比较时间效率,N在这先取50000
17             num2[i]=num1[i];
18             num3[i]=num1[i];
19         }
20         long star_time=System.currentTimeMillis();//计算开始时间
21         //方法一:冒泡
22         for(int i=0;i<num1.length;i++) {//冒泡排序
23             for(int j=0;j<num1.length-i-1;j++) {
24                 if(num1[j]>num1[j+1]) {
25                     int temp=num1[j];//在java中可以临时定义一个变量,若前面一个数比后面大两个数交换位置
26                     num1[j]=num1[j+1];
27                     num1[j+1]=temp;
28                 }
29             }
30         }
31         long end_time=System.currentTimeMillis();
32         System.out.println("冒泡排序耗时:"+(end_time-star_time)+"毫秒");//计算结束时间,注意end_time-star_time一定要加(),否则有错
33         
34         //方法二:选择
35         long star_time2=System.currentTimeMillis();
36                 for(int i=0;i<num1.length-1;i++) {//选择排序
37                     int min_inter=i;//记录该组比较中最小数的下标
38                     for(int j=i+1;j<num1.length;j++) {
39                         if(num1[i]>num1[j]) {
40                             min_inter=j;
41                         }
42                     }
43                     //找到最小的数后放入第0个,第二小放在第1个,后面依次
44                     int temp=num2[i];
45                     num2[i]=num2[min_inter];
46                     num2[min_inter]=num2[i];
47                 }
48         long end_time2=System.currentTimeMillis();
49         System.out.println("选择排序耗时:"+(end_time2-star_time2)+"毫秒");
50         //方法三:调用java库里的函数,也是速度最快的
51         long star_time3=System.currentTimeMillis();
52         Arrays.sort(num3);//一句解决,需要导入import java.util.Arrays;
53         long end_time3=System.currentTimeMillis();
54         System.out.println("Arrays.sort()耗时:"+(end_time3-star_time3)+"毫秒");
55         
56         
57 //        //输出,为计算比较三种排序的时间效率,先不打印
58 //        for(int i=0;i<num3.length;i++) {
59 //            if(i%10==0)
60 //                System.out.println();
61 //            else
62 //                System.out.print("\\t");
63 //            System.out.print(num3[i]);    
64 //        }
65         
66         
67     }
68 }

 

下面是这三种排序算法所耗时间:

技术分享图片

从运行结果上来看,冒泡排序所耗时间最长,其次是选择排序,冒泡排序和选择排序相比较,冒泡排序时间更长主要是因为冒泡排序交换次数更多,所耗时间自然就更长了。

 

以上是关于三种排序方法用java实现的主要内容,如果未能解决你的问题,请参考以下文章

7种基本排序算法的Java实现

java代码[No.4]—快速排序算法的三种方式及其优化

Java快速排序的非递归实现

用Java实现冒泡排序和Arrays排序

java 代码片段

java编程实现随机数组的快速排序