数组常见常用的几种排序→→→冒泡→→选择→→插入

大家都知道数组的排序有很多种究竟哪种排序比较好呢?  究竟哪种排序的速度更快呢?

          我做最近做了一个小小的测试分享给大家!!!!

总结:

  1. 插入排序效率高  费内存
  2. 选择排序速度比冒泡快
  3. Arrays.sort 的速度比选择排序快并且操作简单
View Code
  1 package com.zhou.sort;
  2 
  3 import java.lang.reflect.Array;
  4 import java.util.ArrayList;
  5 import java.util.Arrays;
  6 import java.util.Calendar;
  7 
  8 public class Test {
  9 
 10     /**
 11      * 冒泡。。。选择。。。。插入
 12      */
 13     public static void main(String[] args) {
 14         // TODO Auto-generated method stub
 15         int len=8;
 16         //int a[] = { 2, 6, 9, 7, 5, 3, 1, 4, 8 };
 17         int [] a=new int[len];
 18         for (int i = 0; i < len; i++) {
 19             int t=(int) (((Math.random()*100)+1));
 20             a[i]=t;
 21         }
 22         System.out.print("插入:");
 23         insertSort i= new insertSort();
 24         i.sort(a);
 25         
 26         System.out.print("冒泡:");
 27         Bubble Bubble= new Bubble();
 28         
 29         //排序前打印系统时间
 30         Calendar cal=Calendar.getInstance();
 31         System.out.println(cal.getTime());
 32         Bubble.sort(a);//21秒
 33         //排序前打印系统时间
 34         cal=Calendar.getInstance();
 35         System.out.println(cal.getTime());
 36         
 37         
 38         System.out.print("选择:");
 39         
 40         Select s = new Select();
 41         cal=Calendar.getInstance();
 42         System.out.println(cal.getTime());
 43         s.sort(a);   //10秒
 44         //排序前打印系统时间
 45         cal=Calendar.getInstance();
 46         System.out.println(cal.getTime());
 47         
 48         System.out.print("系统:");
 49         cal=Calendar.getInstance();
 50         System.out.println(cal.getTime());
 51         Arrays.sort(a);//速度最快
 52         cal=Calendar.getInstance();
 53         System.out.println(cal.getTime());
 54         
 55         // 输出
 56         for (int j = 0; j < a.length; j++) {
 57             System.out.print(a[j] + " ");
 58         }
 59     }
 60 
 61     
 62 }
 63 /*
 64  * 插入排序    效率高  费内存
 65  */
 66 class insertSort{
 67     public void sort(int a[]) {
 68         for (int i = 0; i < a.length; i++) {
 69             int insertVal=a[i];
 70             //insertVal准备和前一位数
 71             int index=i-1;
 72             while(index>=0&&insertVal<a[index]){
 73                 //将把a[index]向后移动
 74                 a[index+1]=a[index];
 75                 index--;
 76             }
 77             //将insertVal插入到适当位子
 78             a[index+1]=insertVal;
 79         }
 80         // 输出
 81         for (int j = 0; j < a.length; j++) {
 82             System.out.print(a[j] + " ");
 83         }
 84     }
 85     
 86 }
 87 
 88 class Select {
 89     public void sort(int a[]) {
 90         /*
 91          * 选择排序   速度比冒泡快
 92          */
 93         // 外层循环 一共循环的次数
 94         for (int i = 0; i < a.length - 1; i++) {
 95             // 内层循环 逐个比较
 96             for (int j = i + 1; j < a.length; j++) {
 97                 // 比较
 98                 if (a[i] > a[j]) {
 99 
100                     int temp = a[i];
101                     a[i] = a[j];
102                     a[j] = temp;
103                 }
104             }
105 
106         }
107         // 输出
108         /*for (int j = 0; j < a.length; j++) {
109             System.out.print(a[j] + " ");
110         }*/
111     }
112 }
113 
114 
115 /*
116  * 冒泡排序
117  */
118  class Bubble {
119     public void sort(int a[]) {
120 
121         // 外层循环 一共循环的次数
122         for (int i = 0; i < a.length - 1; i++) {
123             // 内层循环 逐个比较
124             for (int j = 0; j < a.length - 1 - i; j++) {
125                 // 比较
126                 if (a[j] > a[j + 1]) {
127 
128                     int temp = a[j];
129                     a[j] = a[j + 1];
130                     a[j + 1] = temp;
131                 }
132             }
133 
134         }
135         // 输出
136         /*for (int j = 0; j < a.length; j++) {
137             System.out.print(a[j] + " ");
138         }*/
139     }
140     
141 }

 

转载于:https://www.cnblogs.com/zyw-205520/archive/2012/08/29/2662363.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值