插入排序与冒泡排序

时间复杂度都为O(n2)

 1 public class Main {
 2 
 3     public static void main(String[] args) {
 4         int [] a = new int [10000];
 5         for (int i =0;i<10000;i++) {
 6             a[i] = i;
 7         }
 8         print(a);
 9         int [] a1 = a.clone();
10         int [] a2 = a.clone();
11         chaRu(a1);
12         maoPao(a2);
13         print(a1);
14         print(a2);
15         
16     }
17     
18     public static void chaRu(int [] arr) {
19         int r = 0;
20         long begin = System.nanoTime();
21         for (int i=0;i<arr.length;i++) {
22             for (int j=i+1;j<arr.length;j++) {
23                 r++;
24                 if (arr[i] > arr[j]) {
25                     int temp = arr[i];
26                     arr[i] = arr[j];
27                     arr[j] = temp;
28                 }
29             }
30         }
31         long end = System.nanoTime();
32         System.out.printf("插入排序循环体次数:%s ,耗时: %s \n",r,(end-begin));
33     }
34     
35     public static void maoPao(int [] arr) {
36         int r = 0;
37         long begin = System.nanoTime();
38         for (int i=0;i<arr.length;i++) {
39             for (int j=0;j<arr.length-i-1;j++) {
40                 r++;
41                 if (arr[j] > arr[j+1]) {
42                     int temp = arr[j+1];
43                     arr[j+1] = arr[j];
44                     arr[j] = temp;
45                 }
46             }
47         }
48         long end = System.nanoTime();
49         System.out.printf("冒泡排序循环体次数:%s ,耗时: %s \n",r,(end-begin));
50     }
51     
52     public static void print(int [] arr) {
53         for (int i = 0;i<10;i++) {
54             System.out.print(arr[i]);
55             System.out.print(",");
56         }
57         System.out.println("...");
58     }
59 
60 }

输出:

1 0,1,2,3,4,5,6,7,8,9,...
2 插入排序循环体次数:49995000 ,耗时: 163172540 
3 冒泡排序循环体次数:49995000 ,耗时: 164708345 
4 0,1,2,3,4,5,6,7,8,9,...
5 0,1,2,3,4,5,6,7,8,9,...

猜你喜欢

转载自www.cnblogs.com/t0000/p/9401820.html
今日推荐