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

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

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

总结:

  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 }

 

你可能感兴趣的:(排序)