有一天,突然有个idea,想知道选择排序和冒泡排序到底谁快谁慢,于是,写了代码来测试。
1.冒泡排序
View Code
/*** * bobble sorting * @param arr */ static void bobble(int arr[]) { boolean flag = false; for(int i=0;i<arr.length-1;++i) { for(int j=0;j<arr.length-1-i;++j) { if(arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; flag = true; } } if(flag) { flag = false; } else { break; } } for(int i :arr) { System.out.print(i + " "); } }
2.选择排序
View Code
/**** * selecting sorting * @param arr */ static void select(int arr[]) { int k; for(int i=0;i<arr.length-1;++i) { k = i; for (int j = i+1; j < arr.length; j++) { if(arr[k] > arr[j]) { k = j; } } if (i != k) { int temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } } for(int i :arr) { System.out.print(i + " "); } }
3.测试代码
View Code
public static void main(String[] args) { int [] arr={1,2,3,4,5,6,-6,-5,-4,-3,-2,-1}; long t1 = System.currentTimeMillis(); System.out.println("当前时间是:" + t1); bobble(arr); long t2 = System.currentTimeMillis(); System.out.println("\r\n执行完冒泡排序后:" + t2); System.out.println("时间差:" + (t2-t1)); long t3 = System.currentTimeMillis(); System.out.println("当前时间:" + t3); select(arr); long t4 = System.currentTimeMillis(); System.out.println("\n\r执行完选择排序后:" + t4); System.out.println("时间差:" + (t4-t3)); }
4,执行结果
View Code
当前时间是:1362287788195 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 执行完冒泡排序后:1362287788196 时间差:1 当前时间:1362287788196 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 执行完选择排序后:1362287788196 时间差:0
5.这短短的数据,也许还不能全面地说明,但是我还是喜欢用选择排序。
--- 2013-3-3,即兴