本帖最后由 雪人 于 2013-10-13 11:32 编辑
排序的效率问题~
小弟不才,只会三种排序(选择排序,冒泡排序,插入排序),也不知道哪种排序效率最高.于是就做个小测试.- public class Test3 {
- public static void main(String[] args) {
-
- long start = System.currentTimeMillis();
- for(int i=0;i<10000000;i++){
- int[] arr = { 122, 342, 53, 14, 333, 523, 888, 77, 1, 664 };
- // insertSort(arr);
- // bubbleSort(arr);
- // selectSort(arr);
- }
- System.out.println(System.currentTimeMillis() - start);
- }
- /**
- * 插入排序
- */
- static void insertSort(int[] arr) {
- for (int i = 1; i < arr.length; i++) {
- int pos = i;
- while (pos > 0 && arr[pos] < arr[pos - 1]) {
- int temp = arr[pos];
- arr[pos] = arr[pos - 1];
- arr[pos - 1] = temp;
- pos--;
- }
- }
- }
- /**
- * 冒泡排序
- */
- static void bubbleSort(int[] arr) {
- 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;
- }
- }
- }
- }
- /**
- * 选择排序
- */
- static void selectSort(int[] arr) {
- for (int i = 0; i < arr.length - 1; i++)
- {
- int pos = i;
- for (int j = i + 1; j < arr.length; j++) {
- if (arr[j] < arr[pos])
- pos = j;
- }
- int temp = arr[i];
- arr[i] = arr[pos];
- arr[pos] = temp;
- }
- }
- }
复制代码 大家可以复制一下,然后打开上面被注掉的方法.测试一下, 经过我多次测试,插入排序速度是最快的.
我不太明白里面的原因...有谁懂???
|