时间复杂度都为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,...