• 四种排序方法用java实现


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

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

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

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

    4、插入排序:思路:每一步将一个待排序的记录,按其排序码大小插入到前面已排序的序列的合适位置,直到全部排序好,其耗时与冒泡排序差不多。

    5、希尔排序:

     

    下面是代码:

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

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

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

  • 相关阅读:
    Java复制数组
    关于js正则表达式的理解
    js声明const, var, let的区别
    原生js删除多个相同类名的子元素
    python -反射hasattr、setattr、delattr
    Python-反射getattr的应用
    Python-库安装
    python -函数
    Appium -作业5(2)
    Appium appium1.6.5 使用 set_value () 输入中文,真机上无显示
  • 原文地址:https://www.cnblogs.com/archer-lcy/p/8304902.html
Copyright © 2020-2023  润新知