用三种方法实现几个数的排序:冒泡排序,选择排序,调用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 }
下面是这三种排序算法所耗时间:
从运行结果上来看,冒泡排序所耗时间最长,其次是选择排序,冒泡排序和选择排序相比较,冒泡排序时间更长主要是因为冒泡排序交换次数更多,所耗时间自然就更长了。