今天下午闲的无聊,突然想起探究学过的排序方法的效率问题(冒泡、Arrays-sort、Collections-sort、选择、插入)我把关于输出的代码用斜杠注释了起来,如果想要获取他排序后的输出结果把注释取消即可,通过调整不同的样本数量,我发现他们的效率时间排名大概相似,下面我以样本数量为30000来展示一下我的运行结果,如果代码有不完善的地方或者还有别的排序方式可以比较的地方,欢迎大家指正,补充!!!- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Random;
- class ComMe
- {
- public static void main(String[]args)
- {
- int length=30000;//设置样本数量
- long ch;
- Number n=new Number(length);
- n.getRandom();
- System.out.println("第1种冒泡排序");
- comp(n,1,length);
- System.out.println("第2种Arrays-sort排序");
- comp(n,2,length);
- System.out.println("第3种Collections-sort排序");
- comp(n,3,length);
- System.out.println("第4种选择排序");
- comp(n,4,length);
- System.out.println("第5种插入排序");
- comp(n,5,length);
- System.out.println("第1种冒泡排序、第2种Arrays-sort排序、第3种Collections-sort排序、第4种选择排序、第5种插入排序");
- System.out.println();
- for(int i=1;i<6;i++)
- {
- System.out.println("第"+i+"种方法花费"+n.len[i]+"毫秒");
- }
- }
- public static void comp(Number n,int c,int l)
- {
- long start=System.currentTimeMillis();
- n.compare(c,l);
- System.out.println();
- long end=System.currentTimeMillis();
- n.setTime(end-start);
- if(c==3)
- {
- System.out.println();
- return;
- }
- /* for(int i=0;i<l;i++)
- {
- System.out.println(n.n[i]);
- }
- */
- }
- }
- class Number
- {
- public Integer[]n;
- private int l;
- public long[]len;
- private int t;
- Number(int l)
- {
- this.l=l;
- len=new long[6];
- t=1;
- }
- public void getRandom()//获取随机数
- {
- n=new Integer[l];
- Random r=new Random();
- for(int i=0;i<l;i++)
- {
- n[i]=r.nextInt(10000);
- }
- }
- public void compare(int choice,int l)//排序
- {
- if(choice==1)//冒泡排序
- {
- int temp;
- for(int i=0;i<l;i++)
- {
- for(int j=0;j<l-1;j++)
- {
- if(n[i]<n[j])
- {
- temp=n[i];
- n[i]=n[j];
- n[j]=temp;
- }
- }
- }
- }
- if(choice==2)//Arrays—sort排序
- {
- Arrays.sort(n);
- System.out.println();
- }
- if(choice==3)//Collections-sort排序
- {
- List list=new ArrayList();
- list=Arrays.asList(n);
- Collections.sort(list);
- //System.out.println(list.size());
- /* Iterator i=list.iterator();
- while(i.hasNext())
- {
- System.out.println(i.next());
- }
- */
- }
- if(choice==4)//选择排序
- {
- for(int i=0;i<n.length;i++)
- {
- int min=i;
- for(int j=i+1;j<n.length;j++)
- {
- if(min>n[j])
- min=n[j];
- }
- if(min!=i)
- {
- int temp=n[i];
- n[i]=n[min];
- n[min]=temp;
- }
- }
- }
- if(choice==5)//插入排序
- {
- for(int i=1;i<n.length;i++)
- {
- for(int j=i;j>0;j--)
- {
- if(n[j]<n[j-1])
- {
- int temp=n[j];
- n[j]=n[j-1];
- n[j-1]=temp;
- }
- else
- break;
- }
- }
- }
- }
- public void setTime(long time)
- {
- len[t]=time;
- t++;
- }
- }
复制代码 |
-
1.png
(6.95 KB, 下载次数: 22)
Eclipse运行结果
-
2.jpg
(22.58 KB, 下载次数: 35)
|